From 70eda5ec7abcb443c216b53f8badbdf856f35c57 Mon Sep 17 00:00:00 2001 From: Miroslava Ivanova Date: Mon, 1 Oct 2018 12:07:41 +0300 Subject: [PATCH 01/22] hmr tests --- tests/webpack/hello_world_js_hmr.py | 123 ++++++++++++++++++++++++++++ 1 file changed, 123 insertions(+) create mode 100644 tests/webpack/hello_world_js_hmr.py diff --git a/tests/webpack/hello_world_js_hmr.py b/tests/webpack/hello_world_js_hmr.py new file mode 100644 index 00000000..0a153def --- /dev/null +++ b/tests/webpack/hello_world_js_hmr.py @@ -0,0 +1,123 @@ +import unittest + +from core.base_class.BaseClass import BaseClass +from core.device.device import Device +from core.device.emulator import Emulator +from core.device.simulator import Simulator +from core.osutils.file import File +from core.osutils.os_type import OSType +from core.settings.settings import ANDROID_KEYSTORE_PATH, \ + ANDROID_KEYSTORE_PASS, ANDROID_KEYSTORE_ALIAS, ANDROID_KEYSTORE_ALIAS_PASS, EMULATOR_ID, CURRENT_OS, \ + IOS_PACKAGE, SIMULATOR_NAME, ANDROID_PACKAGE, WEBPACK_PACKAGE +from core.tns.replace_helper import ReplaceHelper +from core.tns.tns import Tns +from core.tns.tns_platform_type import Platform +from tests.webpack.helpers.helpers import Helpers + + +class WebPackHelloWorldJS(BaseClass): + SIMULATOR_ID = "" + + image_original = 'hello-world-js' + image_change = 'hello-world-js-js-css-xml' + + xml_change = ['app/main-page.xml', 'TAP', 'TEST'] + js_change = ['app/main-view-model.js', 'taps', 'clicks'] + css_change = ['app/app.css', '18', '32'] + + @classmethod + def setUpClass(cls): + BaseClass.setUpClass(cls.__name__) + Emulator.stop() + Emulator.ensure_available() + + Tns.create_app(cls.app_name, update_modules=True) + Tns.install_npm(package=WEBPACK_PACKAGE, option='--save-dev', folder=cls.app_name) + Tns.platform_add_android(attributes={"--path": cls.app_name, "--frameworkPath": ANDROID_PACKAGE}) + + if CURRENT_OS == OSType.OSX: + Simulator.stop() + cls.SIMULATOR_ID = Simulator.ensure_available(simulator_name=SIMULATOR_NAME) + Tns.platform_add_ios(attributes={'--path': cls.app_name, '--frameworkPath': IOS_PACKAGE}) + + def setUp(self): + Tns.kill() + Helpers.emulator_cleanup(app_name=self.app_name) + BaseClass.setUp(self) + + def tearDown(self): + Tns.kill() + BaseClass.tearDown(self) + + @classmethod + def tearDownClass(cls): + BaseClass.tearDownClass() + + @staticmethod + def apply_changes(app_name, log, platform): + + # Change JS, XML and CSS + ReplaceHelper.replace(app_name, WebPackHelloWorldJS.js_change, sleep=10) + if platform == Platform.ANDROID: + text_changed = Device.wait_for_text(device_id=EMULATOR_ID, text='42 clicks left', timeout=20) + assert text_changed, 'Changes in JS file not applied (UI is not refreshed).' + + ReplaceHelper.replace(app_name, WebPackHelloWorldJS.xml_change, sleep=10) + if platform == Platform.ANDROID: + text_changed = Device.wait_for_text(device_id=EMULATOR_ID, text='TEST') + assert text_changed, 'Changes in XML file not applied (UI is not refreshed).' + + ReplaceHelper.replace(app_name, WebPackHelloWorldJS.css_change, sleep=10) + if platform == Platform.ANDROID: + Tns.wait_for_log(log_file=log, string_list=['app.css'], clean_log=False) + + Tns.wait_for_log(log_file=log, string_list=Helpers.wp_sync, not_existing_string_list=Helpers.wp_errors, + timeout=120) + + # Verify application looks correct + if platform == Platform.ANDROID: + Helpers.android_screen_match(image=WebPackHelloWorldJS.image_change, timeout=120) + if platform == Platform.IOS: + Helpers.ios_screen_match(sim_id=WebPackHelloWorldJS.SIMULATOR_ID, image=WebPackHelloWorldJS.image_change, + timeout=120) + + @staticmethod + def revert_changes(app_name, log, platform): + # Clean old logs + if CURRENT_OS is not OSType.WINDOWS: + File.write(file_path=log, text="") + + # Revert XML changes + ReplaceHelper.rollback(app_name, WebPackHelloWorldJS.xml_change, sleep=10) + Tns.wait_for_log(log_file=log, string_list=['main-page.xml'], clean_log=False) + if platform == Platform.ANDROID: + text_changed = Device.wait_for_text(device_id=EMULATOR_ID, text='TAP') + assert text_changed, 'Changes in XML file not applied (UI is not refreshed).' + + # Revert JS changes + ReplaceHelper.rollback(app_name, WebPackHelloWorldJS.js_change, sleep=10) + Tns.wait_for_log(log_file=log, string_list=['main-view-model.js'], clean_log=False) + if platform == Platform.ANDROID: + text_changed = Device.wait_for_text(device_id=EMULATOR_ID, text='42 taps left', timeout=20) + assert text_changed, 'Changes in TS file not applied (UI is not refreshed).' + + # Revert CSS changes + ReplaceHelper.rollback(app_name, WebPackHelloWorldJS.css_change, sleep=10) + Tns.wait_for_log(log_file=log, string_list=['app.css'], clean_log=False) + + # Verify application looks correct + Tns.wait_for_log(log_file=log, string_list=Helpers.wp_sync, not_existing_string_list=Helpers.wp_errors, + timeout=60) + if platform == Platform.ANDROID: + Helpers.android_screen_match(image=WebPackHelloWorldJS.image_original, timeout=120) + if platform == Platform.IOS: + Helpers.ios_screen_match(sim_id=WebPackHelloWorldJS.SIMULATOR_ID, image=WebPackHelloWorldJS.image_original, + timeout=120) + + def test_001_android_run_hmr(self): + log = Tns.run_android(attributes={"--path": self.app_name}) + + Tns.wait_for_log(log_file=log, string_list=Helpers.wp_run, not_existing_string_list=Helpers.wp_errors, + timeout=240) + Helpers.android_screen_match(image=self.image_original, timeout=120) + Helpers.wait_webpack_watcher() \ No newline at end of file From 8f8f103cf5b980218abd87936e2fb9c8e91e0554 Mon Sep 17 00:00:00 2001 From: Miroslava Ivanova Date: Mon, 8 Oct 2018 10:10:05 +0300 Subject: [PATCH 02/22] hmr tests --- tests/webpack/hello_world_js_hmr.py | 110 ++++++++++++++++++++++++---- tests/webpack/helpers/helpers.py | 6 ++ 2 files changed, 100 insertions(+), 16 deletions(-) diff --git a/tests/webpack/hello_world_js_hmr.py b/tests/webpack/hello_world_js_hmr.py index 0a153def..1249458b 100644 --- a/tests/webpack/hello_world_js_hmr.py +++ b/tests/webpack/hello_world_js_hmr.py @@ -15,7 +15,7 @@ from tests.webpack.helpers.helpers import Helpers -class WebPackHelloWorldJS(BaseClass): +class RunAndroidEmulatorTestsHMR(BaseClass): SIMULATOR_ID = "" image_original = 'hello-world-js' @@ -56,18 +56,25 @@ def tearDownClass(cls): @staticmethod def apply_changes(app_name, log, platform): + not_found_list = [] # Change JS, XML and CSS - ReplaceHelper.replace(app_name, WebPackHelloWorldJS.js_change, sleep=10) + ReplaceHelper.replace(app_name, RunAndroidEmulatorTestsHMR.js_change, sleep=10) + strings = ['JS: HMR: The following modules were updated:', './main-view-model.js', + 'JS: HMR: App is up to date.', 'Successfully transferred bundle.{0}'.format(not_found_list)] + Tns.wait_for_log(log_file=log, string_list=strings) if platform == Platform.ANDROID: text_changed = Device.wait_for_text(device_id=EMULATOR_ID, text='42 clicks left', timeout=20) assert text_changed, 'Changes in JS file not applied (UI is not refreshed).' - ReplaceHelper.replace(app_name, WebPackHelloWorldJS.xml_change, sleep=10) + ReplaceHelper.replace(app_name, RunAndroidEmulatorTestsHMR.xml_change, sleep=10) + strings = ['Refreshing application...', 'JS: HMR: Checking for updates to the bundle.', + './main-page.xml'] + Tns.wait_for_log(log_file=log, string_list=strings) if platform == Platform.ANDROID: text_changed = Device.wait_for_text(device_id=EMULATOR_ID, text='TEST') assert text_changed, 'Changes in XML file not applied (UI is not refreshed).' - ReplaceHelper.replace(app_name, WebPackHelloWorldJS.css_change, sleep=10) + ReplaceHelper.replace(app_name, RunAndroidEmulatorTestsHMR.css_change, sleep=10) if platform == Platform.ANDROID: Tns.wait_for_log(log_file=log, string_list=['app.css'], clean_log=False) @@ -76,11 +83,33 @@ def apply_changes(app_name, log, platform): # Verify application looks correct if platform == Platform.ANDROID: - Helpers.android_screen_match(image=WebPackHelloWorldJS.image_change, timeout=120) + Helpers.android_screen_match(image=RunAndroidEmulatorTestsHMR.image_change, timeout=120) if platform == Platform.IOS: - Helpers.ios_screen_match(sim_id=WebPackHelloWorldJS.SIMULATOR_ID, image=WebPackHelloWorldJS.image_change, + Helpers.ios_screen_match(sim_id=RunAndroidEmulatorTestsHMR.SIMULATOR_ID, image=RunAndroidEmulatorTestsHMR.image_change, timeout=120) + @staticmethod + def apply_changes_js(app_name, log, platform): + # Change JS + ReplaceHelper.replace(app_name, RunAndroidEmulatorTestsHMR.js_change, sleep=10) + strings = ['JS: HMR: The following modules were updated:', './main-view-model.js', + 'JS: HMR: App is up to date.'] + Tns.wait_for_log(log_file=log, string_list=strings) + if platform == Platform.ANDROID: + text_changed = Device.wait_for_text(device_id=EMULATOR_ID, text='42 clicks left', timeout=20) + assert text_changed, 'Changes in JS file not applied (UI is not refreshed).' + + @staticmethod + def apply_changes_xml(app_name, log, platform): + # Change XML + ReplaceHelper.replace(app_name, RunAndroidEmulatorTestsHMR.xml_change, sleep=10) + strings = ['Refreshing application...', 'JS: HMR: Checking for updates to the bundle.', + './main-page.xml'] + Tns.wait_for_log(log_file=log, string_list=strings) + if platform == Platform.ANDROID: + text_changed = Device.wait_for_text(device_id=EMULATOR_ID, text='TEST') + assert text_changed, 'Changes in XML file not applied (UI is not refreshed).' + @staticmethod def revert_changes(app_name, log, platform): # Clean old logs @@ -88,36 +117,85 @@ def revert_changes(app_name, log, platform): File.write(file_path=log, text="") # Revert XML changes - ReplaceHelper.rollback(app_name, WebPackHelloWorldJS.xml_change, sleep=10) - Tns.wait_for_log(log_file=log, string_list=['main-page.xml'], clean_log=False) + ReplaceHelper.rollback(app_name, RunAndroidEmulatorTestsHMR.xml_change, sleep=10) + strings = ['Refreshing application...', 'JS: HMR: Checking for updates to the bundle.', + './main-page.xml'] + Tns.wait_for_log(log_file=log, string_list=strings) if platform == Platform.ANDROID: text_changed = Device.wait_for_text(device_id=EMULATOR_ID, text='TAP') assert text_changed, 'Changes in XML file not applied (UI is not refreshed).' # Revert JS changes - ReplaceHelper.rollback(app_name, WebPackHelloWorldJS.js_change, sleep=10) - Tns.wait_for_log(log_file=log, string_list=['main-view-model.js'], clean_log=False) + ReplaceHelper.rollback(app_name, RunAndroidEmulatorTestsHMR.js_change, sleep=10) + strings = ['JS: HMR: The following modules were updated:', './main-view-model.js', + 'JS: HMR: App is up to date.'] + Tns.wait_for_log(log_file=log, string_list=strings) if platform == Platform.ANDROID: text_changed = Device.wait_for_text(device_id=EMULATOR_ID, text='42 taps left', timeout=20) - assert text_changed, 'Changes in TS file not applied (UI is not refreshed).' + assert text_changed, 'JS: HMR: The following modules were updated:' # Revert CSS changes - ReplaceHelper.rollback(app_name, WebPackHelloWorldJS.css_change, sleep=10) + ReplaceHelper.rollback(app_name, RunAndroidEmulatorTestsHMR.css_change, sleep=10) Tns.wait_for_log(log_file=log, string_list=['app.css'], clean_log=False) # Verify application looks correct Tns.wait_for_log(log_file=log, string_list=Helpers.wp_sync, not_existing_string_list=Helpers.wp_errors, timeout=60) if platform == Platform.ANDROID: - Helpers.android_screen_match(image=WebPackHelloWorldJS.image_original, timeout=120) + Helpers.android_screen_match(image=RunAndroidEmulatorTestsHMR.image_original, timeout=120) if platform == Platform.IOS: - Helpers.ios_screen_match(sim_id=WebPackHelloWorldJS.SIMULATOR_ID, image=WebPackHelloWorldJS.image_original, + Helpers.ios_screen_match(sim_id=RunAndroidEmulatorTestsHMR.SIMULATOR_ID, image=RunAndroidEmulatorTestsHMR.image_original, timeout=120) def test_001_android_run_hmr(self): - log = Tns.run_android(attributes={"--path": self.app_name}) + log = Tns.run_android(attributes={'--path': self.app_name, '--device': EMULATOR_ID, '--hmr': ''}, wait=False, + assert_success=False) + + Tns.wait_for_log(log_file=log, string_list=Helpers.wp_run_hmr, not_existing_string_list=Helpers.wp_errors_hmr, + timeout=240) + Helpers.android_screen_match(image=self.image_original, timeout=120) + + self.apply_changes(app_name=self.app_name, log=log, platform=Platform.ANDROID) + self.revert_changes(app_name=self.app_name, log=log, platform=Platform.ANDROID) + + def test_001_ios_run_hmr(self): + log = Tns.run_ios(attributes={'--path': self.app_name, '--device': EMULATOR_ID, '--hmr': ''}, wait=False, + assert_success=False) + + Tns.wait_for_log(log_file=log, string_list=Helpers.wp_run_hmr, not_existing_string_list=Helpers.wp_errors_hmr, + timeout=240) + Helpers.ios_screen_match(image=self.image_original, timeout=120) + + self.apply_changes(app_name=self.app_name, log=log, platform=Platform.ANDROID) + self.revert_changes(app_name=self.app_name, log=log, platform=Platform.ANDROID) + + def test_002_android_run_hmr_uninstall_app(self): + log = Tns.run_android(attributes={'--path': self.app_name, '--device': EMULATOR_ID, '--hmr': ''}, wait=False, + assert_success=False) + + Tns.wait_for_log(log_file=log, string_list=Helpers.wp_run_hmr, not_existing_string_list=Helpers.wp_errors_hmr, + timeout=240) + Helpers.android_screen_match(image=self.image_original, timeout=120) + + self.apply_changes_js(app_name=self.app_name, log=log, platform=Platform.ANDROID) + + # Uninstall app while `tns run` is running + Device.uninstall_app(app_prefix='org.nativescript.', platform=Platform.ANDROID) + + self.apply_changes_xml(app_name=self.app_name, log=log, platform=Platform.ANDROID) + + # Verify application looks correct + if Platform == Platform.ANDROID: + Helpers.android_screen_match(image=RunAndroidEmulatorTestsHMR.image_change, timeout=120) + + def test_003_android_run_hmr_delete_file(self): + log = Tns.run_android(attributes={'--path': self.app_name, '--device': EMULATOR_ID, '--hmr': ''}, wait=False, + assert_success=False) Tns.wait_for_log(log_file=log, string_list=Helpers.wp_run, not_existing_string_list=Helpers.wp_errors, timeout=240) Helpers.android_screen_match(image=self.image_original, timeout=120) - Helpers.wait_webpack_watcher() \ No newline at end of file + File.remove(self.app_name + 'app', 'main-view-model.js') + + self.apply_changes(app_name=self.app_name, log=log, platform=Platform.ANDROID) + self.revert_changes(app_name=self.app_name, log=log, platform=Platform.ANDROID) \ No newline at end of file diff --git a/tests/webpack/helpers/helpers.py b/tests/webpack/helpers/helpers.py index 4fbfaf8b..d4bdd5e7 100644 --- a/tests/webpack/helpers/helpers.py +++ b/tests/webpack/helpers/helpers.py @@ -16,6 +16,12 @@ class Helpers(object): no_wp_run = ['Successfully installed'] no_wp_sync = ['Successfully synced application'] wp = ['Webpack compilation complete'] + wp_run_hmr = ['Webpack compilation complete', 'Successfully installed', 'JS: HMR: Sync', + 'JS: HMR: Hot Module Replacement Enabled. Waiting for signal.'] + wp_sync_hmr = ['Webpack compilation complete', 'Successfully synced application', + 'JS: HMR: Checking for updates to the bundle.'] + wp_errors_hmr = ['Module build failed', 'ENOENT'] + wp_run = ['Webpack compilation complete', 'Successfully installed'] wp_sync = ['Webpack compilation complete', 'Successfully synced application'] wp_sync_snapshot = ['Webpack compilation complete', 'Successfully synced app', 'Stripping the snapshot flag.'] From 74819e2e0e7ee26a186b39816bd9ddfb6e22b389 Mon Sep 17 00:00:00 2001 From: Miroslava Ivanova Date: Wed, 17 Oct 2018 17:28:15 +0300 Subject: [PATCH 03/22] new string --- tests/webpack/hello_world_js_hmr.py | 43 +++++++++++++++++------------ 1 file changed, 25 insertions(+), 18 deletions(-) diff --git a/tests/webpack/hello_world_js_hmr.py b/tests/webpack/hello_world_js_hmr.py index 1249458b..910f1291 100644 --- a/tests/webpack/hello_world_js_hmr.py +++ b/tests/webpack/hello_world_js_hmr.py @@ -13,9 +13,11 @@ from core.tns.tns import Tns from core.tns.tns_platform_type import Platform from tests.webpack.helpers.helpers import Helpers +import hashlib +import re -class RunAndroidEmulatorTestsHMR(BaseClass): +class RunTestsHMR(BaseClass): SIMULATOR_ID = "" image_original = 'hello-world-js' @@ -24,6 +26,7 @@ class RunAndroidEmulatorTestsHMR(BaseClass): xml_change = ['app/main-page.xml', 'TAP', 'TEST'] js_change = ['app/main-view-model.js', 'taps', 'clicks'] css_change = ['app/app.css', '18', '32'] + result = re.match() @classmethod def setUpClass(cls): @@ -58,23 +61,27 @@ def apply_changes(app_name, log, platform): not_found_list = [] # Change JS, XML and CSS - ReplaceHelper.replace(app_name, RunAndroidEmulatorTestsHMR.js_change, sleep=10) - strings = ['JS: HMR: The following modules were updated:', './main-view-model.js', - 'JS: HMR: App is up to date.', 'Successfully transferred bundle.{0}'.format(not_found_list)] + ReplaceHelper.replace(app_name, RunTestsHMR.js_change, sleep=10) + strings = ['JS: HMR: The following modules were updated:', './main-view-model.js', './main-page.js', + 'Successfully transferred bundle.', + 'JS: HMR: Successfully applied update with hmr hash '] + # strings = ['JS: HMR: The following modules were updated:', './main-view-model.js', './main-page.js', + # 'Successfully transferred bundle.{0}.hot-update.js'.format(hash()), + # 'JS: HMR: Successfully applied update with hmr hash {0}'.format(hashlib.sha1)] Tns.wait_for_log(log_file=log, string_list=strings) if platform == Platform.ANDROID: text_changed = Device.wait_for_text(device_id=EMULATOR_ID, text='42 clicks left', timeout=20) assert text_changed, 'Changes in JS file not applied (UI is not refreshed).' - ReplaceHelper.replace(app_name, RunAndroidEmulatorTestsHMR.xml_change, sleep=10) - strings = ['Refreshing application...', 'JS: HMR: Checking for updates to the bundle.', - './main-page.xml'] + ReplaceHelper.replace(app_name, RunTestsHMR.xml_change, sleep=10) + strings = ['Refreshing application...', 'JS: HMR: Checking for updates to the bundle with hmr hash {0}.', + './main-page.xml', 'JS: HMR: Successfully applied update with hmr hash {0}'] Tns.wait_for_log(log_file=log, string_list=strings) if platform == Platform.ANDROID: text_changed = Device.wait_for_text(device_id=EMULATOR_ID, text='TEST') assert text_changed, 'Changes in XML file not applied (UI is not refreshed).' - ReplaceHelper.replace(app_name, RunAndroidEmulatorTestsHMR.css_change, sleep=10) + ReplaceHelper.replace(app_name, RunTestsHMR.css_change, sleep=10) if platform == Platform.ANDROID: Tns.wait_for_log(log_file=log, string_list=['app.css'], clean_log=False) @@ -83,15 +90,15 @@ def apply_changes(app_name, log, platform): # Verify application looks correct if platform == Platform.ANDROID: - Helpers.android_screen_match(image=RunAndroidEmulatorTestsHMR.image_change, timeout=120) + Helpers.android_screen_match(image=RunTestsHMR.image_change, timeout=120) if platform == Platform.IOS: - Helpers.ios_screen_match(sim_id=RunAndroidEmulatorTestsHMR.SIMULATOR_ID, image=RunAndroidEmulatorTestsHMR.image_change, + Helpers.ios_screen_match(sim_id=RunTestsHMR.SIMULATOR_ID, image=RunTestsHMR.image_change, timeout=120) @staticmethod def apply_changes_js(app_name, log, platform): # Change JS - ReplaceHelper.replace(app_name, RunAndroidEmulatorTestsHMR.js_change, sleep=10) + ReplaceHelper.replace(app_name, RunTestsHMR.js_change, sleep=10) strings = ['JS: HMR: The following modules were updated:', './main-view-model.js', 'JS: HMR: App is up to date.'] Tns.wait_for_log(log_file=log, string_list=strings) @@ -102,7 +109,7 @@ def apply_changes_js(app_name, log, platform): @staticmethod def apply_changes_xml(app_name, log, platform): # Change XML - ReplaceHelper.replace(app_name, RunAndroidEmulatorTestsHMR.xml_change, sleep=10) + ReplaceHelper.replace(app_name, RunTestsHMR.xml_change, sleep=10) strings = ['Refreshing application...', 'JS: HMR: Checking for updates to the bundle.', './main-page.xml'] Tns.wait_for_log(log_file=log, string_list=strings) @@ -117,7 +124,7 @@ def revert_changes(app_name, log, platform): File.write(file_path=log, text="") # Revert XML changes - ReplaceHelper.rollback(app_name, RunAndroidEmulatorTestsHMR.xml_change, sleep=10) + ReplaceHelper.rollback(app_name, RunTestsHMR.xml_change, sleep=10) strings = ['Refreshing application...', 'JS: HMR: Checking for updates to the bundle.', './main-page.xml'] Tns.wait_for_log(log_file=log, string_list=strings) @@ -126,7 +133,7 @@ def revert_changes(app_name, log, platform): assert text_changed, 'Changes in XML file not applied (UI is not refreshed).' # Revert JS changes - ReplaceHelper.rollback(app_name, RunAndroidEmulatorTestsHMR.js_change, sleep=10) + ReplaceHelper.rollback(app_name, RunTestsHMR.js_change, sleep=10) strings = ['JS: HMR: The following modules were updated:', './main-view-model.js', 'JS: HMR: App is up to date.'] Tns.wait_for_log(log_file=log, string_list=strings) @@ -135,16 +142,16 @@ def revert_changes(app_name, log, platform): assert text_changed, 'JS: HMR: The following modules were updated:' # Revert CSS changes - ReplaceHelper.rollback(app_name, RunAndroidEmulatorTestsHMR.css_change, sleep=10) + ReplaceHelper.rollback(app_name, RunTestsHMR.css_change, sleep=10) Tns.wait_for_log(log_file=log, string_list=['app.css'], clean_log=False) # Verify application looks correct Tns.wait_for_log(log_file=log, string_list=Helpers.wp_sync, not_existing_string_list=Helpers.wp_errors, timeout=60) if platform == Platform.ANDROID: - Helpers.android_screen_match(image=RunAndroidEmulatorTestsHMR.image_original, timeout=120) + Helpers.android_screen_match(image=RunTestsHMR.image_original, timeout=120) if platform == Platform.IOS: - Helpers.ios_screen_match(sim_id=RunAndroidEmulatorTestsHMR.SIMULATOR_ID, image=RunAndroidEmulatorTestsHMR.image_original, + Helpers.ios_screen_match(sim_id=RunTestsHMR.SIMULATOR_ID, image=RunTestsHMR.image_original, timeout=120) def test_001_android_run_hmr(self): @@ -186,7 +193,7 @@ def test_002_android_run_hmr_uninstall_app(self): # Verify application looks correct if Platform == Platform.ANDROID: - Helpers.android_screen_match(image=RunAndroidEmulatorTestsHMR.image_change, timeout=120) + Helpers.android_screen_match(image=RunTestsHMR.image_change, timeout=120) def test_003_android_run_hmr_delete_file(self): log = Tns.run_android(attributes={'--path': self.app_name, '--device': EMULATOR_ID, '--hmr': ''}, wait=False, From ba89e4c57804ba991f0023b4bb984d1a3b9d869e Mon Sep 17 00:00:00 2001 From: Miroslava Ivanova Date: Mon, 22 Oct 2018 12:34:46 +0300 Subject: [PATCH 04/22] hmr tests --- tests/webpack/hello_world_js_hmr.py | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/tests/webpack/hello_world_js_hmr.py b/tests/webpack/hello_world_js_hmr.py index 910f1291..9664eb74 100644 --- a/tests/webpack/hello_world_js_hmr.py +++ b/tests/webpack/hello_world_js_hmr.py @@ -13,8 +13,8 @@ from core.tns.tns import Tns from core.tns.tns_platform_type import Platform from tests.webpack.helpers.helpers import Helpers -import hashlib -import re +# import hashlib +# import re class RunTestsHMR(BaseClass): @@ -26,7 +26,6 @@ class RunTestsHMR(BaseClass): xml_change = ['app/main-page.xml', 'TAP', 'TEST'] js_change = ['app/main-view-model.js', 'taps', 'clicks'] css_change = ['app/app.css', '18', '32'] - result = re.match() @classmethod def setUpClass(cls): @@ -74,8 +73,8 @@ def apply_changes(app_name, log, platform): assert text_changed, 'Changes in JS file not applied (UI is not refreshed).' ReplaceHelper.replace(app_name, RunTestsHMR.xml_change, sleep=10) - strings = ['Refreshing application...', 'JS: HMR: Checking for updates to the bundle with hmr hash {0}.', - './main-page.xml', 'JS: HMR: Successfully applied update with hmr hash {0}'] + strings = ['Refreshing application on device', 'JS: HMR: Checking for updates to the bundle with hmr hash', + './main-page.xml', 'JS: HMR: Successfully applied update with hmr hash'] Tns.wait_for_log(log_file=log, string_list=strings) if platform == Platform.ANDROID: text_changed = Device.wait_for_text(device_id=EMULATOR_ID, text='TEST') @@ -125,8 +124,8 @@ def revert_changes(app_name, log, platform): # Revert XML changes ReplaceHelper.rollback(app_name, RunTestsHMR.xml_change, sleep=10) - strings = ['Refreshing application...', 'JS: HMR: Checking for updates to the bundle.', - './main-page.xml'] + strings = ['JS: HMR: Sync...', 'Refreshing application on device', './main-page.xml', + 'JS: HMR: Checking for updates to the bundle with hmr hash'] Tns.wait_for_log(log_file=log, string_list=strings) if platform == Platform.ANDROID: text_changed = Device.wait_for_text(device_id=EMULATOR_ID, text='TAP') @@ -134,8 +133,8 @@ def revert_changes(app_name, log, platform): # Revert JS changes ReplaceHelper.rollback(app_name, RunTestsHMR.js_change, sleep=10) - strings = ['JS: HMR: The following modules were updated:', './main-view-model.js', - 'JS: HMR: App is up to date.'] + strings = ['JS: HMR: The following modules were updated:', './main-view-model.js', './main-page.js', + 'Successfully transferred bundle.', 'JS: HMR: Successfully applied update with hmr hash '] Tns.wait_for_log(log_file=log, string_list=strings) if platform == Platform.ANDROID: text_changed = Device.wait_for_text(device_id=EMULATOR_ID, text='42 taps left', timeout=20) @@ -166,7 +165,7 @@ def test_001_android_run_hmr(self): self.revert_changes(app_name=self.app_name, log=log, platform=Platform.ANDROID) def test_001_ios_run_hmr(self): - log = Tns.run_ios(attributes={'--path': self.app_name, '--device': EMULATOR_ID, '--hmr': ''}, wait=False, + log = Tns.run_ios(attributes={'--path': self.app_name, '--emulator': '', '--hmr': ''}, wait=False, assert_success=False) Tns.wait_for_log(log_file=log, string_list=Helpers.wp_run_hmr, not_existing_string_list=Helpers.wp_errors_hmr, From 21a3f50d7311f5bb7b3118dbce631936eebb8b52 Mon Sep 17 00:00:00 2001 From: Miroslava Ivanova Date: Wed, 24 Oct 2018 13:50:31 +0300 Subject: [PATCH 05/22] add new test --- .../issues/console-log-hmr/main-view-model.js | 25 +++++++ tests/webpack/hello_world_js_hmr.py | 73 +++++++++++++++---- 2 files changed, 82 insertions(+), 16 deletions(-) create mode 100644 data/issues/console-log-hmr/main-view-model.js diff --git a/data/issues/console-log-hmr/main-view-model.js b/data/issues/console-log-hmr/main-view-model.js new file mode 100644 index 00000000..ef128cfd --- /dev/null +++ b/data/issues/console-log-hmr/main-view-model.js @@ -0,0 +1,25 @@ +var Observable = require("tns-core-modules/data/observable").Observable; + +function getMessage(counter) { + if (counter <= 0) { + return "Hoorraaay! You unlocked the NativeScript clicker achievement!"; + } else { + return counter + " taps left"; + } +} + +function createViewModel() { + var viewModel = new Observable(); + viewModel.counter = 42; + viewModel.message = getMessage(viewModel.counter); + console.log("LOG"); + + viewModel.onTap = function() { + this.counter--; + this.set("message", getMessage(this.counter)); + } + + return viewModel; +} + +exports.createViewModel = createViewModel; \ No newline at end of file diff --git a/tests/webpack/hello_world_js_hmr.py b/tests/webpack/hello_world_js_hmr.py index 9664eb74..74e56ca4 100644 --- a/tests/webpack/hello_world_js_hmr.py +++ b/tests/webpack/hello_world_js_hmr.py @@ -1,5 +1,7 @@ import unittest +import os + from core.base_class.BaseClass import BaseClass from core.device.device import Device from core.device.emulator import Emulator @@ -98,8 +100,9 @@ def apply_changes(app_name, log, platform): def apply_changes_js(app_name, log, platform): # Change JS ReplaceHelper.replace(app_name, RunTestsHMR.js_change, sleep=10) - strings = ['JS: HMR: The following modules were updated:', './main-view-model.js', - 'JS: HMR: App is up to date.'] + strings = ['JS: HMR: The following modules were updated:', './main-view-model.js', './main-page.js', + 'Successfully transferred bundle.', + 'JS: HMR: Successfully applied update with hmr hash '] Tns.wait_for_log(log_file=log, string_list=strings) if platform == Platform.ANDROID: text_changed = Device.wait_for_text(device_id=EMULATOR_ID, text='42 clicks left', timeout=20) @@ -107,10 +110,10 @@ def apply_changes_js(app_name, log, platform): @staticmethod def apply_changes_xml(app_name, log, platform): - # Change XML + # Change XML after uninstall app from device ReplaceHelper.replace(app_name, RunTestsHMR.xml_change, sleep=10) - strings = ['Refreshing application...', 'JS: HMR: Checking for updates to the bundle.', - './main-page.xml'] + strings = ['Refreshing application on device', + 'JS: HMR: Sync...','JS: HMR: Hot Module Replacement Enabled. Waiting for signal.'] Tns.wait_for_log(log_file=log, string_list=strings) if platform == Platform.ANDROID: text_changed = Device.wait_for_text(device_id=EMULATOR_ID, text='TEST') @@ -164,7 +167,7 @@ def test_001_android_run_hmr(self): self.apply_changes(app_name=self.app_name, log=log, platform=Platform.ANDROID) self.revert_changes(app_name=self.app_name, log=log, platform=Platform.ANDROID) - def test_001_ios_run_hmr(self): + def test_002_ios_run_hmr(self): log = Tns.run_ios(attributes={'--path': self.app_name, '--emulator': '', '--hmr': ''}, wait=False, assert_success=False) @@ -172,10 +175,10 @@ def test_001_ios_run_hmr(self): timeout=240) Helpers.ios_screen_match(image=self.image_original, timeout=120) - self.apply_changes(app_name=self.app_name, log=log, platform=Platform.ANDROID) - self.revert_changes(app_name=self.app_name, log=log, platform=Platform.ANDROID) + self.apply_changes(app_name=self.app_name, log=log, platform=Platform.IOS) + self.revert_changes(app_name=self.app_name, log=log, platform=Platform.IOS) - def test_002_android_run_hmr_uninstall_app(self): + def test_003_android_run_hmr_uninstall_app(self): log = Tns.run_android(attributes={'--path': self.app_name, '--device': EMULATOR_ID, '--hmr': ''}, wait=False, assert_success=False) @@ -194,14 +197,52 @@ def test_002_android_run_hmr_uninstall_app(self): if Platform == Platform.ANDROID: Helpers.android_screen_match(image=RunTestsHMR.image_change, timeout=120) - def test_003_android_run_hmr_delete_file(self): + def test_004_ios_run_hmr_uninstall_app(self): + log = Tns.run_ios(attributes={'--path': self.app_name, '--emulator': '', '--hmr': ''}, wait=False, + assert_success=False) + Tns.wait_for_log(log_file=log, string_list=Helpers.wp_run_hmr, not_existing_string_list=Helpers.wp_errors_hmr, + timeout=240) + Helpers.ios_screen_match(image=self.image_original, timeout=120) + + self.apply_changes_js(app_name=self.app_name, log=log, platform=Platform.IOS) + + # Uninstall app while `tns run` is running + Device.uninstall_app(app_prefix='org.nativescript.', platform=Platform.IOS) + + self.apply_changes_xml(app_name=self.app_name, log=log, platform=Platform.IOS) + + def test_005_android_run_hmr_console_log(self): + source_js = os.path.join('data', "issues", 'console-log-hmr', 'main-view-model.js') + target_js = os.path.join(self.app_name, 'app', 'main-view-model.js') + File.copy(src=source_js, dest=target_js) + log = Tns.run_android(attributes={'--path': self.app_name, '--device': EMULATOR_ID, '--hmr': ''}, wait=False, - assert_success=False) + assert_success=False) + strings = ['JS: LOG'] + Tns.wait_for_log(log_file=log, string_list=strings) - Tns.wait_for_log(log_file=log, string_list=Helpers.wp_run, not_existing_string_list=Helpers.wp_errors, - timeout=240) Helpers.android_screen_match(image=self.image_original, timeout=120) - File.remove(self.app_name + 'app', 'main-view-model.js') - self.apply_changes(app_name=self.app_name, log=log, platform=Platform.ANDROID) - self.revert_changes(app_name=self.app_name, log=log, platform=Platform.ANDROID) \ No newline at end of file + def test_006_ios_run_hmr_console_log(self): + source_js = os.path.join('data', "issues", 'console-log-hmr', 'main-view-model.js') + target_js = os.path.join(self.app_name, 'app', 'main-view-model.js') + File.copy(src=source_js, dest=target_js) + + log = Tns.run_ios(attributes={'--path': self.app_name, '--emulator': '', '--hmr': ''}, wait=False, + assert_success=False) + strings = ['JS: LOG'] + Tns.wait_for_log(log_file=log, string_list=strings) + + Helpers.ios_screen_match(image=self.image_original, timeout=120) + + # def test_007_android_run_hmr_delete_file(self): + # log = Tns.run_android(attributes={'--path': self.app_name, '--device': EMULATOR_ID, '--hmr': ''}, wait=False, + # assert_success=False) + # + # Tns.wait_for_log(log_file=log, string_list=Helpers.wp_run, not_existing_string_list=Helpers.wp_errors, + # timeout=240) + # Helpers.android_screen_match(image=self.image_original, timeout=120) + # File.remove(self.app_name + 'app', 'main-view-model.js') + # + # self.apply_changes(app_name=self.app_name, log=log, platform=Platform.ANDROID) + # self.revert_changes(app_name=self.app_name, log=log, platform=Platform.ANDROID) \ No newline at end of file From 9224466e91002f099d167113d9d51dfaeed6d60c Mon Sep 17 00:00:00 2001 From: Miroslava Ivanova Date: Fri, 26 Oct 2018 09:42:50 +0300 Subject: [PATCH 06/22] hmr tests --- tests/webpack/hello_world_js_hmr.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/tests/webpack/hello_world_js_hmr.py b/tests/webpack/hello_world_js_hmr.py index 74e56ca4..072b301f 100644 --- a/tests/webpack/hello_world_js_hmr.py +++ b/tests/webpack/hello_world_js_hmr.py @@ -119,6 +119,17 @@ def apply_changes_xml(app_name, log, platform): text_changed = Device.wait_for_text(device_id=EMULATOR_ID, text='TEST') assert text_changed, 'Changes in XML file not applied (UI is not refreshed).' + @staticmethod + def revert_changes_xml(app_name, log, platform): + # Change XML after uninstall app from device + ReplaceHelper.rollback(app_name, RunTestsHMR.xml_change, sleep=10) + strings = ['Refreshing application on device', + 'JS: HMR: Sync...','JS: HMR: Hot Module Replacement Enabled. Waiting for signal.'] + Tns.wait_for_log(log_file=log, string_list=strings) + if platform == Platform.ANDROID: + text_changed = Device.wait_for_text(device_id=EMULATOR_ID, text='TAP') + assert text_changed, 'Changes in XML file not applied (UI is not refreshed).' + @staticmethod def revert_changes(app_name, log, platform): # Clean old logs @@ -167,6 +178,7 @@ def test_001_android_run_hmr(self): self.apply_changes(app_name=self.app_name, log=log, platform=Platform.ANDROID) self.revert_changes(app_name=self.app_name, log=log, platform=Platform.ANDROID) + @unittest.skipIf(CURRENT_OS != OSType.OSX, "Run only on macOS.") def test_002_ios_run_hmr(self): log = Tns.run_ios(attributes={'--path': self.app_name, '--emulator': '', '--hmr': ''}, wait=False, assert_success=False) @@ -197,6 +209,7 @@ def test_003_android_run_hmr_uninstall_app(self): if Platform == Platform.ANDROID: Helpers.android_screen_match(image=RunTestsHMR.image_change, timeout=120) + @unittest.skipIf(CURRENT_OS != OSType.OSX, "Run only on macOS.") def test_004_ios_run_hmr_uninstall_app(self): log = Tns.run_ios(attributes={'--path': self.app_name, '--emulator': '', '--hmr': ''}, wait=False, assert_success=False) @@ -210,6 +223,7 @@ def test_004_ios_run_hmr_uninstall_app(self): Device.uninstall_app(app_prefix='org.nativescript.', platform=Platform.IOS) self.apply_changes_xml(app_name=self.app_name, log=log, platform=Platform.IOS) + self.revert_changes_xml(app_name=self.app_name, log=log, platform=Platform.IOS) def test_005_android_run_hmr_console_log(self): source_js = os.path.join('data', "issues", 'console-log-hmr', 'main-view-model.js') @@ -221,8 +235,9 @@ def test_005_android_run_hmr_console_log(self): strings = ['JS: LOG'] Tns.wait_for_log(log_file=log, string_list=strings) - Helpers.android_screen_match(image=self.image_original, timeout=120) + Helpers.android_screen_match(image=self.image_change, timeout=120) + @unittest.skipIf(CURRENT_OS != OSType.OSX, "Run only on macOS.") def test_006_ios_run_hmr_console_log(self): source_js = os.path.join('data', "issues", 'console-log-hmr', 'main-view-model.js') target_js = os.path.join(self.app_name, 'app', 'main-view-model.js') From 2759826ad37893e8e4c2a2c8c38201e6c4218dab Mon Sep 17 00:00:00 2001 From: Miroslava Ivanova Date: Fri, 26 Oct 2018 11:38:20 +0300 Subject: [PATCH 07/22] change logs --- tests/webpack/hello_world_js_hmr.py | 29 +++++++++++++++-------------- tests/webpack/helpers/helpers.py | 6 +++--- 2 files changed, 18 insertions(+), 17 deletions(-) diff --git a/tests/webpack/hello_world_js_hmr.py b/tests/webpack/hello_world_js_hmr.py index 072b301f..7a58429a 100644 --- a/tests/webpack/hello_world_js_hmr.py +++ b/tests/webpack/hello_world_js_hmr.py @@ -63,9 +63,9 @@ def apply_changes(app_name, log, platform): not_found_list = [] # Change JS, XML and CSS ReplaceHelper.replace(app_name, RunTestsHMR.js_change, sleep=10) - strings = ['JS: HMR: The following modules were updated:', './main-view-model.js', './main-page.js', + strings = ['HMR: The following modules were updated:', './main-view-model.js', './main-page.js', 'Successfully transferred bundle.', - 'JS: HMR: Successfully applied update with hmr hash '] + 'HMR: Successfully applied update with hmr hash '] # strings = ['JS: HMR: The following modules were updated:', './main-view-model.js', './main-page.js', # 'Successfully transferred bundle.{0}.hot-update.js'.format(hash()), # 'JS: HMR: Successfully applied update with hmr hash {0}'.format(hashlib.sha1)] @@ -75,8 +75,8 @@ def apply_changes(app_name, log, platform): assert text_changed, 'Changes in JS file not applied (UI is not refreshed).' ReplaceHelper.replace(app_name, RunTestsHMR.xml_change, sleep=10) - strings = ['Refreshing application on device', 'JS: HMR: Checking for updates to the bundle with hmr hash', - './main-page.xml', 'JS: HMR: Successfully applied update with hmr hash'] + strings = ['Refreshing application on device', 'HMR: Checking for updates to the bundle with hmr hash', + './main-page.xml', 'HMR: Successfully applied update with hmr hash'] Tns.wait_for_log(log_file=log, string_list=strings) if platform == Platform.ANDROID: text_changed = Device.wait_for_text(device_id=EMULATOR_ID, text='TEST') @@ -100,9 +100,9 @@ def apply_changes(app_name, log, platform): def apply_changes_js(app_name, log, platform): # Change JS ReplaceHelper.replace(app_name, RunTestsHMR.js_change, sleep=10) - strings = ['JS: HMR: The following modules were updated:', './main-view-model.js', './main-page.js', + strings = ['HMR: The following modules were updated:', './main-view-model.js', './main-page.js', 'Successfully transferred bundle.', - 'JS: HMR: Successfully applied update with hmr hash '] + 'HMR: Successfully applied update with hmr hash '] Tns.wait_for_log(log_file=log, string_list=strings) if platform == Platform.ANDROID: text_changed = Device.wait_for_text(device_id=EMULATOR_ID, text='42 clicks left', timeout=20) @@ -113,7 +113,7 @@ def apply_changes_xml(app_name, log, platform): # Change XML after uninstall app from device ReplaceHelper.replace(app_name, RunTestsHMR.xml_change, sleep=10) strings = ['Refreshing application on device', - 'JS: HMR: Sync...','JS: HMR: Hot Module Replacement Enabled. Waiting for signal.'] + 'HMR: Sync...','JS: HMR: Hot Module Replacement Enabled. Waiting for signal.'] Tns.wait_for_log(log_file=log, string_list=strings) if platform == Platform.ANDROID: text_changed = Device.wait_for_text(device_id=EMULATOR_ID, text='TEST') @@ -123,8 +123,8 @@ def apply_changes_xml(app_name, log, platform): def revert_changes_xml(app_name, log, platform): # Change XML after uninstall app from device ReplaceHelper.rollback(app_name, RunTestsHMR.xml_change, sleep=10) - strings = ['Refreshing application on device', - 'JS: HMR: Sync...','JS: HMR: Hot Module Replacement Enabled. Waiting for signal.'] + strings = ['HMR: Sync...', 'Refreshing application on device', + 'HMR: Checking for updates to the bundle with hmr hash'] Tns.wait_for_log(log_file=log, string_list=strings) if platform == Platform.ANDROID: text_changed = Device.wait_for_text(device_id=EMULATOR_ID, text='TAP') @@ -138,8 +138,8 @@ def revert_changes(app_name, log, platform): # Revert XML changes ReplaceHelper.rollback(app_name, RunTestsHMR.xml_change, sleep=10) - strings = ['JS: HMR: Sync...', 'Refreshing application on device', './main-page.xml', - 'JS: HMR: Checking for updates to the bundle with hmr hash'] + strings = ['HMR: Sync...', 'Refreshing application on device', './main-page.xml', + 'HMR: Checking for updates to the bundle with hmr hash'] Tns.wait_for_log(log_file=log, string_list=strings) if platform == Platform.ANDROID: text_changed = Device.wait_for_text(device_id=EMULATOR_ID, text='TAP') @@ -147,12 +147,12 @@ def revert_changes(app_name, log, platform): # Revert JS changes ReplaceHelper.rollback(app_name, RunTestsHMR.js_change, sleep=10) - strings = ['JS: HMR: The following modules were updated:', './main-view-model.js', './main-page.js', - 'Successfully transferred bundle.', 'JS: HMR: Successfully applied update with hmr hash '] + strings = ['HMR: The following modules were updated:', './main-view-model.js', './main-page.js', + 'Successfully transferred bundle.', 'HMR: Successfully applied update with hmr hash '] Tns.wait_for_log(log_file=log, string_list=strings) if platform == Platform.ANDROID: text_changed = Device.wait_for_text(device_id=EMULATOR_ID, text='42 taps left', timeout=20) - assert text_changed, 'JS: HMR: The following modules were updated:' + assert text_changed, 'HMR: The following modules were updated:' # Revert CSS changes ReplaceHelper.rollback(app_name, RunTestsHMR.css_change, sleep=10) @@ -204,6 +204,7 @@ def test_003_android_run_hmr_uninstall_app(self): Device.uninstall_app(app_prefix='org.nativescript.', platform=Platform.ANDROID) self.apply_changes_xml(app_name=self.app_name, log=log, platform=Platform.ANDROID) + self.revert_changes_xml(app_name=self.app_name, log=log, platform=Platform.ANDROID) # Verify application looks correct if Platform == Platform.ANDROID: diff --git a/tests/webpack/helpers/helpers.py b/tests/webpack/helpers/helpers.py index d4bdd5e7..c5d5ef64 100644 --- a/tests/webpack/helpers/helpers.py +++ b/tests/webpack/helpers/helpers.py @@ -16,10 +16,10 @@ class Helpers(object): no_wp_run = ['Successfully installed'] no_wp_sync = ['Successfully synced application'] wp = ['Webpack compilation complete'] - wp_run_hmr = ['Webpack compilation complete', 'Successfully installed', 'JS: HMR: Sync', - 'JS: HMR: Hot Module Replacement Enabled. Waiting for signal.'] + wp_run_hmr = ['Webpack compilation complete', 'Successfully installed', 'HMR: Sync', + 'HMR: Hot Module Replacement Enabled. Waiting for signal.'] wp_sync_hmr = ['Webpack compilation complete', 'Successfully synced application', - 'JS: HMR: Checking for updates to the bundle.'] + 'HMR: Checking for updates to the bundle.'] wp_errors_hmr = ['Module build failed', 'ENOENT'] wp_run = ['Webpack compilation complete', 'Successfully installed'] From c7f3a767fa01f785061a0862889391e06ac1d961 Mon Sep 17 00:00:00 2001 From: Miroslava Ivanova Date: Fri, 26 Oct 2018 12:34:29 +0300 Subject: [PATCH 08/22] change log --- data/issues/console-log-hmr/main-view-model.js | 2 +- tests/webpack/hello_world_js_hmr.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/data/issues/console-log-hmr/main-view-model.js b/data/issues/console-log-hmr/main-view-model.js index ef128cfd..e1e4a53d 100644 --- a/data/issues/console-log-hmr/main-view-model.js +++ b/data/issues/console-log-hmr/main-view-model.js @@ -12,7 +12,7 @@ function createViewModel() { var viewModel = new Observable(); viewModel.counter = 42; viewModel.message = getMessage(viewModel.counter); - console.log("LOG"); + console.log("LOG Hello"); viewModel.onTap = function() { this.counter--; diff --git a/tests/webpack/hello_world_js_hmr.py b/tests/webpack/hello_world_js_hmr.py index 7a58429a..1c34097a 100644 --- a/tests/webpack/hello_world_js_hmr.py +++ b/tests/webpack/hello_world_js_hmr.py @@ -233,7 +233,7 @@ def test_005_android_run_hmr_console_log(self): log = Tns.run_android(attributes={'--path': self.app_name, '--device': EMULATOR_ID, '--hmr': ''}, wait=False, assert_success=False) - strings = ['JS: LOG'] + strings = ['LOG Hello'] Tns.wait_for_log(log_file=log, string_list=strings) Helpers.android_screen_match(image=self.image_change, timeout=120) @@ -246,7 +246,7 @@ def test_006_ios_run_hmr_console_log(self): log = Tns.run_ios(attributes={'--path': self.app_name, '--emulator': '', '--hmr': ''}, wait=False, assert_success=False) - strings = ['JS: LOG'] + strings = ['LOG Hello'] Tns.wait_for_log(log_file=log, string_list=strings) Helpers.ios_screen_match(image=self.image_original, timeout=120) From 6f974962a66c6d4b7fdd99ef6cf9583287bfbceb Mon Sep 17 00:00:00 2001 From: Miroslava Ivanova Date: Fri, 26 Oct 2018 14:46:03 +0300 Subject: [PATCH 09/22] change ios screen match --- tests/webpack/hello_world_js_hmr.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/webpack/hello_world_js_hmr.py b/tests/webpack/hello_world_js_hmr.py index 1c34097a..d7521166 100644 --- a/tests/webpack/hello_world_js_hmr.py +++ b/tests/webpack/hello_world_js_hmr.py @@ -185,7 +185,7 @@ def test_002_ios_run_hmr(self): Tns.wait_for_log(log_file=log, string_list=Helpers.wp_run_hmr, not_existing_string_list=Helpers.wp_errors_hmr, timeout=240) - Helpers.ios_screen_match(image=self.image_original, timeout=120) + Helpers.ios_screen_match(sim_id=self.SIMULATOR_ID, image=self.image_original, timeout=120) self.apply_changes(app_name=self.app_name, log=log, platform=Platform.IOS) self.revert_changes(app_name=self.app_name, log=log, platform=Platform.IOS) @@ -216,7 +216,7 @@ def test_004_ios_run_hmr_uninstall_app(self): assert_success=False) Tns.wait_for_log(log_file=log, string_list=Helpers.wp_run_hmr, not_existing_string_list=Helpers.wp_errors_hmr, timeout=240) - Helpers.ios_screen_match(image=self.image_original, timeout=120) + Helpers.ios_screen_match(sim_id=self.SIMULATOR_ID, image=self.image_original, timeout=120) self.apply_changes_js(app_name=self.app_name, log=log, platform=Platform.IOS) @@ -249,7 +249,7 @@ def test_006_ios_run_hmr_console_log(self): strings = ['LOG Hello'] Tns.wait_for_log(log_file=log, string_list=strings) - Helpers.ios_screen_match(image=self.image_original, timeout=120) + Helpers.ios_screen_match(sim_id=self.SIMULATOR_ID, image=self.image_original, timeout=120) # def test_007_android_run_hmr_delete_file(self): # log = Tns.run_android(attributes={'--path': self.app_name, '--device': EMULATOR_ID, '--hmr': ''}, wait=False, From 4f51d6bc492dd4abb9a5c0567268fd4f01c7edf1 Mon Sep 17 00:00:00 2001 From: Miroslava Ivanova Date: Mon, 29 Oct 2018 13:32:16 +0200 Subject: [PATCH 10/22] uninstall logs --- tests/webpack/hello_world_js_hmr.py | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/tests/webpack/hello_world_js_hmr.py b/tests/webpack/hello_world_js_hmr.py index d7521166..447fa3d0 100644 --- a/tests/webpack/hello_world_js_hmr.py +++ b/tests/webpack/hello_world_js_hmr.py @@ -119,6 +119,26 @@ def apply_changes_xml(app_name, log, platform): text_changed = Device.wait_for_text(device_id=EMULATOR_ID, text='TEST') assert text_changed, 'Changes in XML file not applied (UI is not refreshed).' + @staticmethod + def revert_changes_js(app_name, log, platform): + # Change JS + ReplaceHelper.rollback(app_name, RunTestsHMR.js_change, sleep=10) + strings = ['HMR: The following modules were updated:', './main-view-model.js', './main-page.js', + 'Successfully transferred bundle.', 'HMR: Successfully applied update with hmr hash '] + Tns.wait_for_log(log_file=log, string_list=strings) + if platform == Platform.ANDROID: + text_changed = Device.wait_for_text(device_id=EMULATOR_ID, text='42 taps left', timeout=20) + assert text_changed, 'Changes in JS file not applied (UI is not refreshed)' + + ReplaceHelper.rollback(app_name, RunTestsHMR.js_change, sleep=10) + strings = ['HMR: The following modules were updated:', './main-view-model.js', './main-page.js', + 'Successfully transferred bundle.', + 'HMR: Successfully applied update with hmr hash '] + Tns.wait_for_log(log_file=log, string_list=strings) + if platform == Platform.ANDROID: + text_changed = Device.wait_for_text(device_id=EMULATOR_ID, text='42 clicks left', timeout=20) + assert text_changed, 'Changes in JS file not applied (UI is not refreshed).' + @staticmethod def revert_changes_xml(app_name, log, platform): # Change XML after uninstall app from device @@ -203,8 +223,7 @@ def test_003_android_run_hmr_uninstall_app(self): # Uninstall app while `tns run` is running Device.uninstall_app(app_prefix='org.nativescript.', platform=Platform.ANDROID) - self.apply_changes_xml(app_name=self.app_name, log=log, platform=Platform.ANDROID) - self.revert_changes_xml(app_name=self.app_name, log=log, platform=Platform.ANDROID) + self.revert_changes_js(app_name=self.app_name, log=log, platform=Platform.ANDROID) # Verify application looks correct if Platform == Platform.ANDROID: @@ -223,6 +242,8 @@ def test_004_ios_run_hmr_uninstall_app(self): # Uninstall app while `tns run` is running Device.uninstall_app(app_prefix='org.nativescript.', platform=Platform.IOS) + self.revert_changes_js(app_name=self.app_name, log=log, platform=Platform.IOS) + self.apply_changes_xml(app_name=self.app_name, log=log, platform=Platform.IOS) self.revert_changes_xml(app_name=self.app_name, log=log, platform=Platform.IOS) From 9ec4f3a125d11411c8baeabc1f042c9774b21a40 Mon Sep 17 00:00:00 2001 From: Miroslava Ivanova Date: Mon, 29 Oct 2018 15:23:37 +0200 Subject: [PATCH 11/22] hmr checkes --- tests/webpack/hello_world_js_hmr.py | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/tests/webpack/hello_world_js_hmr.py b/tests/webpack/hello_world_js_hmr.py index 447fa3d0..c8377a31 100644 --- a/tests/webpack/hello_world_js_hmr.py +++ b/tests/webpack/hello_world_js_hmr.py @@ -123,8 +123,8 @@ def apply_changes_xml(app_name, log, platform): def revert_changes_js(app_name, log, platform): # Change JS ReplaceHelper.rollback(app_name, RunTestsHMR.js_change, sleep=10) - strings = ['HMR: The following modules were updated:', './main-view-model.js', './main-page.js', - 'Successfully transferred bundle.', 'HMR: Successfully applied update with hmr hash '] + strings = ['Refreshing application on device', + 'HMR: Sync...','JS: HMR: Hot Module Replacement Enabled. Waiting for signal.'] Tns.wait_for_log(log_file=log, string_list=strings) if platform == Platform.ANDROID: text_changed = Device.wait_for_text(device_id=EMULATOR_ID, text='42 taps left', timeout=20) @@ -224,10 +224,7 @@ def test_003_android_run_hmr_uninstall_app(self): Device.uninstall_app(app_prefix='org.nativescript.', platform=Platform.ANDROID) self.revert_changes_js(app_name=self.app_name, log=log, platform=Platform.ANDROID) - - # Verify application looks correct - if Platform == Platform.ANDROID: - Helpers.android_screen_match(image=RunTestsHMR.image_change, timeout=120) + Helpers.android_screen_match(image=self.image_original, timeout=120) @unittest.skipIf(CURRENT_OS != OSType.OSX, "Run only on macOS.") def test_004_ios_run_hmr_uninstall_app(self): @@ -243,9 +240,7 @@ def test_004_ios_run_hmr_uninstall_app(self): Device.uninstall_app(app_prefix='org.nativescript.', platform=Platform.IOS) self.revert_changes_js(app_name=self.app_name, log=log, platform=Platform.IOS) - - self.apply_changes_xml(app_name=self.app_name, log=log, platform=Platform.IOS) - self.revert_changes_xml(app_name=self.app_name, log=log, platform=Platform.IOS) + Helpers.ios_screen_match(sim_id=self.SIMULATOR_ID, image=self.image_original, timeout=120) def test_005_android_run_hmr_console_log(self): source_js = os.path.join('data', "issues", 'console-log-hmr', 'main-view-model.js') @@ -257,7 +252,7 @@ def test_005_android_run_hmr_console_log(self): strings = ['LOG Hello'] Tns.wait_for_log(log_file=log, string_list=strings) - Helpers.android_screen_match(image=self.image_change, timeout=120) + Helpers.android_screen_match(image=self.image_original, timeout=120) @unittest.skipIf(CURRENT_OS != OSType.OSX, "Run only on macOS.") def test_006_ios_run_hmr_console_log(self): From 7a09546676e357a4c967e59dadded7862f37e827 Mon Sep 17 00:00:00 2001 From: Miroslava Ivanova Date: Mon, 29 Oct 2018 16:16:36 +0200 Subject: [PATCH 12/22] hmr test --- tests/webpack/hello_world_js_hmr.py | 9 --------- 1 file changed, 9 deletions(-) diff --git a/tests/webpack/hello_world_js_hmr.py b/tests/webpack/hello_world_js_hmr.py index c8377a31..c7e29da4 100644 --- a/tests/webpack/hello_world_js_hmr.py +++ b/tests/webpack/hello_world_js_hmr.py @@ -130,15 +130,6 @@ def revert_changes_js(app_name, log, platform): text_changed = Device.wait_for_text(device_id=EMULATOR_ID, text='42 taps left', timeout=20) assert text_changed, 'Changes in JS file not applied (UI is not refreshed)' - ReplaceHelper.rollback(app_name, RunTestsHMR.js_change, sleep=10) - strings = ['HMR: The following modules were updated:', './main-view-model.js', './main-page.js', - 'Successfully transferred bundle.', - 'HMR: Successfully applied update with hmr hash '] - Tns.wait_for_log(log_file=log, string_list=strings) - if platform == Platform.ANDROID: - text_changed = Device.wait_for_text(device_id=EMULATOR_ID, text='42 clicks left', timeout=20) - assert text_changed, 'Changes in JS file not applied (UI is not refreshed).' - @staticmethod def revert_changes_xml(app_name, log, platform): # Change XML after uninstall app from device From 8cf9803d6f21b183a1ab157401f81f19b5ddfe29 Mon Sep 17 00:00:00 2001 From: Miroslava Ivanova Date: Thu, 1 Nov 2018 14:58:07 +0200 Subject: [PATCH 13/22] change structure --- tests/hmr/__init__.py | 0 tests/hmr/hello_world_js_hmr_android.py | 105 +++++++++ tests/hmr/hello_world_js_hmr_ios.py | 98 +++++++++ tests/hmr/helpers_hmr.py | 163 ++++++++++++++ tests/webpack/hello_world_js_hmr.py | 271 ------------------------ 5 files changed, 366 insertions(+), 271 deletions(-) create mode 100644 tests/hmr/__init__.py create mode 100644 tests/hmr/hello_world_js_hmr_android.py create mode 100644 tests/hmr/hello_world_js_hmr_ios.py create mode 100644 tests/hmr/helpers_hmr.py delete mode 100644 tests/webpack/hello_world_js_hmr.py diff --git a/tests/hmr/__init__.py b/tests/hmr/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/tests/hmr/hello_world_js_hmr_android.py b/tests/hmr/hello_world_js_hmr_android.py new file mode 100644 index 00000000..0b560b5c --- /dev/null +++ b/tests/hmr/hello_world_js_hmr_android.py @@ -0,0 +1,105 @@ +import unittest + +import os + +from core.base_class.BaseClass import BaseClass +from core.device.device import Device +from core.device.emulator import Emulator +from core.device.simulator import Simulator +from core.osutils.file import File +from core.osutils.os_type import OSType +from core.settings.settings import ANDROID_KEYSTORE_PATH, \ + ANDROID_KEYSTORE_PASS, ANDROID_KEYSTORE_ALIAS, ANDROID_KEYSTORE_ALIAS_PASS, EMULATOR_ID, CURRENT_OS, \ + IOS_PACKAGE, SIMULATOR_NAME, ANDROID_PACKAGE, WEBPACK_PACKAGE +from core.tns.replace_helper import ReplaceHelper +from core.tns.tns import Tns +from core.tns.tns_platform_type import Platform +from tests.hmr.helpers_hmr import HelpersHMR +from tests.webpack.helpers.helpers import Helpers +# import hashlib +# import re + + +class HelloWorldJSHMRAndroid(BaseClass): + # SIMULATOR_ID = "" + # + # image_original = 'hello-world-js' + # image_change = 'hello-world-js-js-css-xml' + # + # xml_change = ['app/main-page.xml', 'TAP', 'TEST'] + # js_change = ['app/main-view-model.js', 'taps', 'clicks'] + # css_change = ['app/app.css', '18', '32'] + + @classmethod + def setUpClass(cls): + BaseClass.setUpClass(cls.__name__) + Emulator.stop() + Emulator.ensure_available() + + Tns.create_app(cls.app_name, update_modules=True) + Tns.install_npm(package=WEBPACK_PACKAGE, option='--save-dev', folder=cls.app_name) + Tns.platform_add_android(attributes={"--path": cls.app_name, "--frameworkPath": ANDROID_PACKAGE}) + + def setUp(self): + Tns.kill() + Helpers.emulator_cleanup(app_name=self.app_name) + BaseClass.setUp(self) + + def tearDown(self): + Tns.kill() + BaseClass.tearDown(self) + + @classmethod + def tearDownClass(cls): + BaseClass.tearDownClass() + + def test_001_android_run_hmr(self): + log = Tns.run_android(attributes={'--path': self.app_name, '--device': EMULATOR_ID, '--hmr': ''}, wait=False, + assert_success=False) + + Tns.wait_for_log(log_file=log, string_list=HelpersHMR.run_hmr, not_existing_string_list=HelpersHMR.errors_hmr, + timeout=240) + Helpers.android_screen_match(image=HelpersHMR.image_original, timeout=120) + + HelpersHMR.apply_changes(app_name=self.app_name, log=log, platform=Platform.ANDROID) + HelpersHMR.revert_changes(app_name=self.app_name, log=log, platform=Platform.ANDROID) + + def test_002_android_run_hmr_uninstall_app(self): + log = Tns.run_android(attributes={'--path': self.app_name, '--device': EMULATOR_ID, '--hmr': ''}, wait=False, + assert_success=False) + + Tns.wait_for_log(log_file=log, string_list=HelpersHMR.run_hmr_with_platforms, not_existing_string_list=HelpersHMR.errors_hmr, + timeout=240) + Helpers.android_screen_match(image=HelpersHMR.image_original, timeout=120) + + HelpersHMR.apply_changes_js(app_name=self.app_name, log=log, platform=Platform.ANDROID) + + # Uninstall app while `tns run` is running + Device.uninstall_app(app_prefix='org.nativescript.', platform=Platform.ANDROID) + + HelpersHMR.revert_changes_js(app_name=self.app_name, log=log, platform=Platform.ANDROID) + Helpers.android_screen_match(image=HelpersHMR.image_original, timeout=120) + + def test_003_android_run_hmr_console_log(self): + source_js = os.path.join('data', "issues", 'console-log-hmr', 'main-view-model.js') + target_js = os.path.join(self.app_name, 'app', 'main-view-model.js') + File.copy(src=source_js, dest=target_js) + + log = Tns.run_android(attributes={'--path': self.app_name, '--device': EMULATOR_ID, '--hmr': ''}, wait=False, + assert_success=False) + strings = ['LOG Hello'] + Tns.wait_for_log(log_file=log, string_list=strings) + + Helpers.android_screen_match(image=HelpersHMR.image_original, timeout=120) + + # def test_004_android_run_hmr_delete_file(self): + # log = Tns.run_android(attributes={'--path': self.app_name, '--device': EMULATOR_ID, '--hmr': ''}, wait=False, + # assert_success=False) + # + # Tns.wait_for_log(log_file=log, string_list=HelpersHMR.wp_run, not_existing_string_list=HelpersHMR.wp_errors, + # timeout=240) + # HelpersHMR.android_screen_match(image=self.image_original, timeout=120) + # File.remove(self.app_name + 'app', 'main-view-model.js') + # + # self.apply_changes(app_name=self.app_name, log=log, platform=Platform.ANDROID) + # self.revert_changes(app_name=self.app_name, log=log, platform=Platform.ANDROID) \ No newline at end of file diff --git a/tests/hmr/hello_world_js_hmr_ios.py b/tests/hmr/hello_world_js_hmr_ios.py new file mode 100644 index 00000000..ff4425bf --- /dev/null +++ b/tests/hmr/hello_world_js_hmr_ios.py @@ -0,0 +1,98 @@ +import unittest + +import os + +from core.base_class.BaseClass import BaseClass +from core.device.device import Device +from core.device.emulator import Emulator +from core.device.simulator import Simulator +from core.osutils.file import File +from core.osutils.os_type import OSType +from core.settings.settings import ANDROID_KEYSTORE_PATH, \ + ANDROID_KEYSTORE_PASS, ANDROID_KEYSTORE_ALIAS, ANDROID_KEYSTORE_ALIAS_PASS, EMULATOR_ID, CURRENT_OS, \ + IOS_PACKAGE, SIMULATOR_NAME, ANDROID_PACKAGE, WEBPACK_PACKAGE +from core.tns.replace_helper import ReplaceHelper +from core.tns.tns import Tns +from core.tns.tns_platform_type import Platform +from tests.hmr.helpers_hmr import HelpersHMR +from tests.webpack.helpers.helpers import Helpers +# import hashlib +# import re + + + +class HelloWorldJSHMRIOS(BaseClass): + + + @classmethod + def setUpClass(cls): + BaseClass.setUpClass(cls.__name__) + Simulator.stop() + cls.SIMULATOR_ID = Simulator.ensure_available(simulator_name=SIMULATOR_NAME) + Tns.platform_add_ios(attributes={'--path': cls.app_name, '--frameworkPath': IOS_PACKAGE}) + + Tns.create_app(cls.app_name, update_modules=True) + Tns.install_npm(package=WEBPACK_PACKAGE, option='--save-dev', folder=cls.app_name) + + def setUp(self): + Tns.kill() + Helpers.emulator_cleanup(app_name=self.app_name) + BaseClass.setUp(self) + + def tearDown(self): + Tns.kill() + BaseClass.tearDown(self) + + @classmethod + def tearDownClass(cls): + BaseClass.tearDownClass() + + def test_001_ios_run_hmr(self): + log = Tns.run_ios(attributes={'--path': self.app_name, '--emulator': '', '--hmr': ''}, wait=False, + assert_success=False) + + Tns.wait_for_log(log_file=log, string_list=HelpersHMR.run_hmr, not_existing_string_list=HelpersHMR.errors_hmr, + timeout=240) + Helpers.ios_screen_match(sim_id=self.SIMULATOR_ID, image=HelpersHMR.image_original, timeout=120) + + HelpersHMR.apply_changes(app_name=self.app_name, log=log, platform=Platform.IOS) + HelpersHMR.revert_changes(app_name=self.app_name, log=log, platform=Platform.IOS) + + def test_002_ios_run_hmr_uninstall_app(self): + log = Tns.run_ios(attributes={'--path': self.app_name, '--emulator': '', '--hmr': ''}, wait=False, + assert_success=False) + Tns.wait_for_log(log_file=log, string_list=HelpersHMR.run_hmr_with_platforms, not_existing_string_list=HelpersHMR.errors_hmr, + timeout=240) + Helpers.ios_screen_match(sim_id=self.SIMULATOR_ID, image=HelpersHMR.image_original, timeout=120) + + HelpersHMR.apply_changes_js(app_name=self.app_name, log=log, platform=Platform.IOS) + + # Uninstall app while `tns run` is running + Device.uninstall_app(app_prefix='org.nativescript.', platform=Platform.IOS) + + HelpersHMR.revert_changes_js(app_name=self.app_name, log=log, platform=Platform.IOS) + Helpers.ios_screen_match(sim_id=self.SIMULATOR_ID, image=HelpersHMR.image_original, timeout=120) + + def test_003_ios_run_hmr_console_log(self): + source_js = os.path.join('data', "issues", 'console-log-hmr', 'main-view-model.js') + target_js = os.path.join(self.app_name, 'app', 'main-view-model.js') + File.copy(src=source_js, dest=target_js) + + log = Tns.run_ios(attributes={'--path': self.app_name, '--emulator': '', '--hmr': ''}, wait=False, + assert_success=False) + strings = ['LOG Hello'] + Tns.wait_for_log(log_file=log, string_list=strings) + + Helpers.ios_screen_match(sim_id=self.SIMULATOR_ID, image=HelpersHMR.image_original, timeout=120) + + # def test_004_android_run_hmr_delete_file(self): + # log = Tns.run_android(attributes={'--path': self.app_name, '--device': EMULATOR_ID, '--hmr': ''}, wait=False, + # assert_success=False) + # + # Tns.wait_for_log(log_file=log, string_list=HelpersHMR.wp_run, not_existing_string_list=HelpersHMR.wp_errors, + # timeout=240) + # HelpersHMR.android_screen_match(image=self.image_original, timeout=120) + # File.remove(self.app_name + 'app', 'main-view-model.js') + # + # self.apply_changes(app_name=self.app_name, log=log, platform=Platform.ANDROID) + # self.revert_changes(app_name=self.app_name, log=log, platform=Platform.ANDROID) \ No newline at end of file diff --git a/tests/hmr/helpers_hmr.py b/tests/hmr/helpers_hmr.py new file mode 100644 index 00000000..5b331cf3 --- /dev/null +++ b/tests/hmr/helpers_hmr.py @@ -0,0 +1,163 @@ +import csv +import os +import time + +from core.device.device import Device +from core.device.helpers.adb import Adb +from core.osutils.file import File +from core.osutils.os_type import OSType +from core.osutils.process import Process +from core.settings.settings import EMULATOR_ID, EMULATOR_NAME, SIMULATOR_NAME, TEST_RUN_HOME, CURRENT_OS +from core.tns.tns import Tns +from core.tns.replace_helper import ReplaceHelper +from core.tns.tns_platform_type import Platform +from tests.webpack.helpers.helpers import Helpers + + +class HelpersHMR(object): + no_wp_run = ['Successfully installed'] + no_wp_sync = ['Successfully synced application'] + wp = ['Webpack compilation complete'] + run_hmr = ['Webpack compilation complete', 'Successfully installed', 'HMR: Sync', + 'HMR: Hot Module Replacement Enabled. Waiting for signal.'] + run_hmr_with_platforms = ['Webpack compilation complete', 'Project successfully prepared', 'HMR: Sync', + 'HMR: Hot Module Replacement Enabled. Waiting for signal.', 'Successfully synced application', + 'Refreshing application on device'] + sync_hmr = ['Webpack compilation complete', 'Successfully synced application', + 'HMR: Checking for updates to the bundle.'] + errors_hmr = ['Module build failed', 'ENOENT'] + + wp_run = ['Webpack compilation complete', 'Successfully installed'] + wp_sync = ['Webpack compilation complete', 'Successfully synced application'] + wp_sync_snapshot = ['Webpack compilation complete', 'Successfully synced app', 'Stripping the snapshot flag.'] + wp_errors = ['Module not found', 'Snapshot generation failed', 'ENOENT'] + + SIMULATOR_ID = "" + + image_original = 'hello-world-js' + image_change = 'hello-world-js-js-css-xml' + + xml_change = ['app/main-page.xml', 'TAP', 'TEST'] + js_change = ['app/main-view-model.js', 'taps', 'clicks'] + css_change = ['app/app.css', '18', '32'] + + @staticmethod + def apply_changes(app_name, log, platform): + + not_found_list = [] + # Change JS, XML and CSS + ReplaceHelper.replace(app_name, HelpersHMR.js_change, sleep=10) + strings = ['HMR: The following modules were updated:', './main-view-model.js', './main-page.js', + 'Successfully transferred bundle.', + 'HMR: Successfully applied update with hmr hash '] + # strings = ['JS: HMR: The following modules were updated:', './main-view-model.js', './main-page.js', + # 'Successfully transferred bundle.{0}.hot-update.js'.format(hash()), + # 'JS: HMR: Successfully applied update with hmr hash {0}'.format(hashlib.sha1)] + Tns.wait_for_log(log_file=log, string_list=strings) + if platform == Platform.ANDROID: + text_changed = Device.wait_for_text(device_id=EMULATOR_ID, text='42 clicks left', timeout=20) + assert text_changed, 'Changes in JS file not applied (UI is not refreshed).' + + ReplaceHelper.replace(app_name, HelpersHMR.xml_change, sleep=10) + strings = ['Refreshing application on device', 'HMR: Checking for updates to the bundle with hmr hash', + './main-page.xml', 'HMR: Successfully applied update with hmr hash'] + Tns.wait_for_log(log_file=log, string_list=strings) + if platform == Platform.ANDROID: + text_changed = Device.wait_for_text(device_id=EMULATOR_ID, text='TEST') + assert text_changed, 'Changes in XML file not applied (UI is not refreshed).' + + ReplaceHelper.replace(app_name, HelpersHMR.css_change, sleep=10) + if platform == Platform.ANDROID: + Tns.wait_for_log(log_file=log, string_list=['app.css'], clean_log=False) + + Tns.wait_for_log(log_file=log, string_list=HelpersHMR.wp_sync, not_existing_string_list=HelpersHMR.wp_errors, + timeout=120) + + # Verify application looks correct + if platform == Platform.ANDROID: + Helpers.android_screen_match(image=HelpersHMR.image_change, timeout=120) + if platform == Platform.IOS: + Helpers.ios_screen_match(sim_id=HelpersHMR.SIMULATOR_ID, image=HelpersHMR.image_change, + timeout=120) + + @staticmethod + def apply_changes_js(app_name, log, platform): + # Change JS + ReplaceHelper.replace(app_name, HelpersHMR.js_change, sleep=10) + strings = ['HMR: The following modules were updated:', './main-view-model.js', './main-page.js', + 'Successfully transferred bundle.', + 'HMR: Successfully applied update with hmr hash '] + Tns.wait_for_log(log_file=log, string_list=strings) + if platform == Platform.ANDROID: + text_changed = Device.wait_for_text(device_id=EMULATOR_ID, text='42 clicks left', timeout=20) + assert text_changed, 'Changes in JS file not applied (UI is not refreshed).' + + @staticmethod + def apply_changes_xml(app_name, log, platform): + # Change XML after uninstall app from device + ReplaceHelper.replace(app_name, HelpersHMR.xml_change, sleep=10) + strings = ['Refreshing application on device', + 'HMR: Sync...','JS: HMR: Hot Module Replacement Enabled. Waiting for signal.'] + Tns.wait_for_log(log_file=log, string_list=strings) + if platform == Platform.ANDROID: + text_changed = Device.wait_for_text(device_id=EMULATOR_ID, text='TEST') + assert text_changed, 'Changes in XML file not applied (UI is not refreshed).' + + @staticmethod + def revert_changes_js(app_name, log, platform): + # Change JS + ReplaceHelper.rollback(app_name, HelpersHMR.js_change, sleep=10) + strings = ['Refreshing application on device', + 'HMR: Sync...','JS: HMR: Hot Module Replacement Enabled. Waiting for signal.'] + Tns.wait_for_log(log_file=log, string_list=strings) + if platform == Platform.ANDROID: + text_changed = Device.wait_for_text(device_id=EMULATOR_ID, text='42 taps left', timeout=20) + assert text_changed, 'Changes in JS file not applied (UI is not refreshed)' + + @staticmethod + def revert_changes_xml(app_name, log, platform): + # Change XML after uninstall app from device + ReplaceHelper.rollback(app_name, HelpersHMR.xml_change, sleep=10) + strings = ['HMR: Sync...', 'Refreshing application on device', + 'HMR: Checking for updates to the bundle with hmr hash'] + Tns.wait_for_log(log_file=log, string_list=strings) + if platform == Platform.ANDROID: + text_changed = Device.wait_for_text(device_id=EMULATOR_ID, text='TAP') + assert text_changed, 'Changes in XML file not applied (UI is not refreshed).' + + @staticmethod + def revert_changes(app_name, log, platform): + # Clean old logs + if CURRENT_OS is not OSType.WINDOWS: + File.write(file_path=log, text="") + + # Revert XML changes + ReplaceHelper.rollback(app_name, HelpersHMR.xml_change, sleep=10) + strings = ['HMR: Sync...', 'Refreshing application on device', './main-page.xml', + 'HMR: Checking for updates to the bundle with hmr hash'] + Tns.wait_for_log(log_file=log, string_list=strings) + if platform == Platform.ANDROID: + text_changed = Device.wait_for_text(device_id=EMULATOR_ID, text='TAP') + assert text_changed, 'Changes in XML file not applied (UI is not refreshed).' + + # Revert JS changes + ReplaceHelper.rollback(app_name, HelpersHMR.js_change, sleep=10) + strings = ['HMR: The following modules were updated:', './main-view-model.js', './main-page.js', + 'Successfully transferred bundle.', 'HMR: Successfully applied update with hmr hash '] + Tns.wait_for_log(log_file=log, string_list=strings) + if platform == Platform.ANDROID: + text_changed = Device.wait_for_text(device_id=EMULATOR_ID, text='42 taps left', timeout=20) + assert text_changed, 'HMR: The following modules were updated:' + + # Revert CSS changes + ReplaceHelper.rollback(app_name, HelpersHMR.css_change, sleep=10) + Tns.wait_for_log(log_file=log, string_list=['app.css'], clean_log=False) + + # Verify application looks correct + Tns.wait_for_log(log_file=log, string_list=HelpersHMR.wp_sync, not_existing_string_list=HelpersHMR.wp_errors, + timeout=60) + if platform == Platform.ANDROID: + Helpers.android_screen_match(image=HelpersHMR.image_original, timeout=120) + if platform == Platform.IOS: + Helpers.ios_screen_match(sim_id=HelpersHMR.SIMULATOR_ID, image=HelpersHMR.image_original, + timeout=120) diff --git a/tests/webpack/hello_world_js_hmr.py b/tests/webpack/hello_world_js_hmr.py deleted file mode 100644 index c7e29da4..00000000 --- a/tests/webpack/hello_world_js_hmr.py +++ /dev/null @@ -1,271 +0,0 @@ -import unittest - -import os - -from core.base_class.BaseClass import BaseClass -from core.device.device import Device -from core.device.emulator import Emulator -from core.device.simulator import Simulator -from core.osutils.file import File -from core.osutils.os_type import OSType -from core.settings.settings import ANDROID_KEYSTORE_PATH, \ - ANDROID_KEYSTORE_PASS, ANDROID_KEYSTORE_ALIAS, ANDROID_KEYSTORE_ALIAS_PASS, EMULATOR_ID, CURRENT_OS, \ - IOS_PACKAGE, SIMULATOR_NAME, ANDROID_PACKAGE, WEBPACK_PACKAGE -from core.tns.replace_helper import ReplaceHelper -from core.tns.tns import Tns -from core.tns.tns_platform_type import Platform -from tests.webpack.helpers.helpers import Helpers -# import hashlib -# import re - - -class RunTestsHMR(BaseClass): - SIMULATOR_ID = "" - - image_original = 'hello-world-js' - image_change = 'hello-world-js-js-css-xml' - - xml_change = ['app/main-page.xml', 'TAP', 'TEST'] - js_change = ['app/main-view-model.js', 'taps', 'clicks'] - css_change = ['app/app.css', '18', '32'] - - @classmethod - def setUpClass(cls): - BaseClass.setUpClass(cls.__name__) - Emulator.stop() - Emulator.ensure_available() - - Tns.create_app(cls.app_name, update_modules=True) - Tns.install_npm(package=WEBPACK_PACKAGE, option='--save-dev', folder=cls.app_name) - Tns.platform_add_android(attributes={"--path": cls.app_name, "--frameworkPath": ANDROID_PACKAGE}) - - if CURRENT_OS == OSType.OSX: - Simulator.stop() - cls.SIMULATOR_ID = Simulator.ensure_available(simulator_name=SIMULATOR_NAME) - Tns.platform_add_ios(attributes={'--path': cls.app_name, '--frameworkPath': IOS_PACKAGE}) - - def setUp(self): - Tns.kill() - Helpers.emulator_cleanup(app_name=self.app_name) - BaseClass.setUp(self) - - def tearDown(self): - Tns.kill() - BaseClass.tearDown(self) - - @classmethod - def tearDownClass(cls): - BaseClass.tearDownClass() - - @staticmethod - def apply_changes(app_name, log, platform): - - not_found_list = [] - # Change JS, XML and CSS - ReplaceHelper.replace(app_name, RunTestsHMR.js_change, sleep=10) - strings = ['HMR: The following modules were updated:', './main-view-model.js', './main-page.js', - 'Successfully transferred bundle.', - 'HMR: Successfully applied update with hmr hash '] - # strings = ['JS: HMR: The following modules were updated:', './main-view-model.js', './main-page.js', - # 'Successfully transferred bundle.{0}.hot-update.js'.format(hash()), - # 'JS: HMR: Successfully applied update with hmr hash {0}'.format(hashlib.sha1)] - Tns.wait_for_log(log_file=log, string_list=strings) - if platform == Platform.ANDROID: - text_changed = Device.wait_for_text(device_id=EMULATOR_ID, text='42 clicks left', timeout=20) - assert text_changed, 'Changes in JS file not applied (UI is not refreshed).' - - ReplaceHelper.replace(app_name, RunTestsHMR.xml_change, sleep=10) - strings = ['Refreshing application on device', 'HMR: Checking for updates to the bundle with hmr hash', - './main-page.xml', 'HMR: Successfully applied update with hmr hash'] - Tns.wait_for_log(log_file=log, string_list=strings) - if platform == Platform.ANDROID: - text_changed = Device.wait_for_text(device_id=EMULATOR_ID, text='TEST') - assert text_changed, 'Changes in XML file not applied (UI is not refreshed).' - - ReplaceHelper.replace(app_name, RunTestsHMR.css_change, sleep=10) - if platform == Platform.ANDROID: - Tns.wait_for_log(log_file=log, string_list=['app.css'], clean_log=False) - - Tns.wait_for_log(log_file=log, string_list=Helpers.wp_sync, not_existing_string_list=Helpers.wp_errors, - timeout=120) - - # Verify application looks correct - if platform == Platform.ANDROID: - Helpers.android_screen_match(image=RunTestsHMR.image_change, timeout=120) - if platform == Platform.IOS: - Helpers.ios_screen_match(sim_id=RunTestsHMR.SIMULATOR_ID, image=RunTestsHMR.image_change, - timeout=120) - - @staticmethod - def apply_changes_js(app_name, log, platform): - # Change JS - ReplaceHelper.replace(app_name, RunTestsHMR.js_change, sleep=10) - strings = ['HMR: The following modules were updated:', './main-view-model.js', './main-page.js', - 'Successfully transferred bundle.', - 'HMR: Successfully applied update with hmr hash '] - Tns.wait_for_log(log_file=log, string_list=strings) - if platform == Platform.ANDROID: - text_changed = Device.wait_for_text(device_id=EMULATOR_ID, text='42 clicks left', timeout=20) - assert text_changed, 'Changes in JS file not applied (UI is not refreshed).' - - @staticmethod - def apply_changes_xml(app_name, log, platform): - # Change XML after uninstall app from device - ReplaceHelper.replace(app_name, RunTestsHMR.xml_change, sleep=10) - strings = ['Refreshing application on device', - 'HMR: Sync...','JS: HMR: Hot Module Replacement Enabled. Waiting for signal.'] - Tns.wait_for_log(log_file=log, string_list=strings) - if platform == Platform.ANDROID: - text_changed = Device.wait_for_text(device_id=EMULATOR_ID, text='TEST') - assert text_changed, 'Changes in XML file not applied (UI is not refreshed).' - - @staticmethod - def revert_changes_js(app_name, log, platform): - # Change JS - ReplaceHelper.rollback(app_name, RunTestsHMR.js_change, sleep=10) - strings = ['Refreshing application on device', - 'HMR: Sync...','JS: HMR: Hot Module Replacement Enabled. Waiting for signal.'] - Tns.wait_for_log(log_file=log, string_list=strings) - if platform == Platform.ANDROID: - text_changed = Device.wait_for_text(device_id=EMULATOR_ID, text='42 taps left', timeout=20) - assert text_changed, 'Changes in JS file not applied (UI is not refreshed)' - - @staticmethod - def revert_changes_xml(app_name, log, platform): - # Change XML after uninstall app from device - ReplaceHelper.rollback(app_name, RunTestsHMR.xml_change, sleep=10) - strings = ['HMR: Sync...', 'Refreshing application on device', - 'HMR: Checking for updates to the bundle with hmr hash'] - Tns.wait_for_log(log_file=log, string_list=strings) - if platform == Platform.ANDROID: - text_changed = Device.wait_for_text(device_id=EMULATOR_ID, text='TAP') - assert text_changed, 'Changes in XML file not applied (UI is not refreshed).' - - @staticmethod - def revert_changes(app_name, log, platform): - # Clean old logs - if CURRENT_OS is not OSType.WINDOWS: - File.write(file_path=log, text="") - - # Revert XML changes - ReplaceHelper.rollback(app_name, RunTestsHMR.xml_change, sleep=10) - strings = ['HMR: Sync...', 'Refreshing application on device', './main-page.xml', - 'HMR: Checking for updates to the bundle with hmr hash'] - Tns.wait_for_log(log_file=log, string_list=strings) - if platform == Platform.ANDROID: - text_changed = Device.wait_for_text(device_id=EMULATOR_ID, text='TAP') - assert text_changed, 'Changes in XML file not applied (UI is not refreshed).' - - # Revert JS changes - ReplaceHelper.rollback(app_name, RunTestsHMR.js_change, sleep=10) - strings = ['HMR: The following modules were updated:', './main-view-model.js', './main-page.js', - 'Successfully transferred bundle.', 'HMR: Successfully applied update with hmr hash '] - Tns.wait_for_log(log_file=log, string_list=strings) - if platform == Platform.ANDROID: - text_changed = Device.wait_for_text(device_id=EMULATOR_ID, text='42 taps left', timeout=20) - assert text_changed, 'HMR: The following modules were updated:' - - # Revert CSS changes - ReplaceHelper.rollback(app_name, RunTestsHMR.css_change, sleep=10) - Tns.wait_for_log(log_file=log, string_list=['app.css'], clean_log=False) - - # Verify application looks correct - Tns.wait_for_log(log_file=log, string_list=Helpers.wp_sync, not_existing_string_list=Helpers.wp_errors, - timeout=60) - if platform == Platform.ANDROID: - Helpers.android_screen_match(image=RunTestsHMR.image_original, timeout=120) - if platform == Platform.IOS: - Helpers.ios_screen_match(sim_id=RunTestsHMR.SIMULATOR_ID, image=RunTestsHMR.image_original, - timeout=120) - - def test_001_android_run_hmr(self): - log = Tns.run_android(attributes={'--path': self.app_name, '--device': EMULATOR_ID, '--hmr': ''}, wait=False, - assert_success=False) - - Tns.wait_for_log(log_file=log, string_list=Helpers.wp_run_hmr, not_existing_string_list=Helpers.wp_errors_hmr, - timeout=240) - Helpers.android_screen_match(image=self.image_original, timeout=120) - - self.apply_changes(app_name=self.app_name, log=log, platform=Platform.ANDROID) - self.revert_changes(app_name=self.app_name, log=log, platform=Platform.ANDROID) - - @unittest.skipIf(CURRENT_OS != OSType.OSX, "Run only on macOS.") - def test_002_ios_run_hmr(self): - log = Tns.run_ios(attributes={'--path': self.app_name, '--emulator': '', '--hmr': ''}, wait=False, - assert_success=False) - - Tns.wait_for_log(log_file=log, string_list=Helpers.wp_run_hmr, not_existing_string_list=Helpers.wp_errors_hmr, - timeout=240) - Helpers.ios_screen_match(sim_id=self.SIMULATOR_ID, image=self.image_original, timeout=120) - - self.apply_changes(app_name=self.app_name, log=log, platform=Platform.IOS) - self.revert_changes(app_name=self.app_name, log=log, platform=Platform.IOS) - - def test_003_android_run_hmr_uninstall_app(self): - log = Tns.run_android(attributes={'--path': self.app_name, '--device': EMULATOR_ID, '--hmr': ''}, wait=False, - assert_success=False) - - Tns.wait_for_log(log_file=log, string_list=Helpers.wp_run_hmr, not_existing_string_list=Helpers.wp_errors_hmr, - timeout=240) - Helpers.android_screen_match(image=self.image_original, timeout=120) - - self.apply_changes_js(app_name=self.app_name, log=log, platform=Platform.ANDROID) - - # Uninstall app while `tns run` is running - Device.uninstall_app(app_prefix='org.nativescript.', platform=Platform.ANDROID) - - self.revert_changes_js(app_name=self.app_name, log=log, platform=Platform.ANDROID) - Helpers.android_screen_match(image=self.image_original, timeout=120) - - @unittest.skipIf(CURRENT_OS != OSType.OSX, "Run only on macOS.") - def test_004_ios_run_hmr_uninstall_app(self): - log = Tns.run_ios(attributes={'--path': self.app_name, '--emulator': '', '--hmr': ''}, wait=False, - assert_success=False) - Tns.wait_for_log(log_file=log, string_list=Helpers.wp_run_hmr, not_existing_string_list=Helpers.wp_errors_hmr, - timeout=240) - Helpers.ios_screen_match(sim_id=self.SIMULATOR_ID, image=self.image_original, timeout=120) - - self.apply_changes_js(app_name=self.app_name, log=log, platform=Platform.IOS) - - # Uninstall app while `tns run` is running - Device.uninstall_app(app_prefix='org.nativescript.', platform=Platform.IOS) - - self.revert_changes_js(app_name=self.app_name, log=log, platform=Platform.IOS) - Helpers.ios_screen_match(sim_id=self.SIMULATOR_ID, image=self.image_original, timeout=120) - - def test_005_android_run_hmr_console_log(self): - source_js = os.path.join('data', "issues", 'console-log-hmr', 'main-view-model.js') - target_js = os.path.join(self.app_name, 'app', 'main-view-model.js') - File.copy(src=source_js, dest=target_js) - - log = Tns.run_android(attributes={'--path': self.app_name, '--device': EMULATOR_ID, '--hmr': ''}, wait=False, - assert_success=False) - strings = ['LOG Hello'] - Tns.wait_for_log(log_file=log, string_list=strings) - - Helpers.android_screen_match(image=self.image_original, timeout=120) - - @unittest.skipIf(CURRENT_OS != OSType.OSX, "Run only on macOS.") - def test_006_ios_run_hmr_console_log(self): - source_js = os.path.join('data', "issues", 'console-log-hmr', 'main-view-model.js') - target_js = os.path.join(self.app_name, 'app', 'main-view-model.js') - File.copy(src=source_js, dest=target_js) - - log = Tns.run_ios(attributes={'--path': self.app_name, '--emulator': '', '--hmr': ''}, wait=False, - assert_success=False) - strings = ['LOG Hello'] - Tns.wait_for_log(log_file=log, string_list=strings) - - Helpers.ios_screen_match(sim_id=self.SIMULATOR_ID, image=self.image_original, timeout=120) - - # def test_007_android_run_hmr_delete_file(self): - # log = Tns.run_android(attributes={'--path': self.app_name, '--device': EMULATOR_ID, '--hmr': ''}, wait=False, - # assert_success=False) - # - # Tns.wait_for_log(log_file=log, string_list=Helpers.wp_run, not_existing_string_list=Helpers.wp_errors, - # timeout=240) - # Helpers.android_screen_match(image=self.image_original, timeout=120) - # File.remove(self.app_name + 'app', 'main-view-model.js') - # - # self.apply_changes(app_name=self.app_name, log=log, platform=Platform.ANDROID) - # self.revert_changes(app_name=self.app_name, log=log, platform=Platform.ANDROID) \ No newline at end of file From 0e59d1e50d334d61821bf756178acb29a5468c87 Mon Sep 17 00:00:00 2001 From: Miroslava Ivanova Date: Thu, 1 Nov 2018 15:25:44 +0200 Subject: [PATCH 14/22] hmr test ios --- tests/hmr/hello_world_js_hmr_ios.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/hmr/hello_world_js_hmr_ios.py b/tests/hmr/hello_world_js_hmr_ios.py index ff4425bf..ca921721 100644 --- a/tests/hmr/hello_world_js_hmr_ios.py +++ b/tests/hmr/hello_world_js_hmr_ios.py @@ -29,10 +29,10 @@ def setUpClass(cls): BaseClass.setUpClass(cls.__name__) Simulator.stop() cls.SIMULATOR_ID = Simulator.ensure_available(simulator_name=SIMULATOR_NAME) - Tns.platform_add_ios(attributes={'--path': cls.app_name, '--frameworkPath': IOS_PACKAGE}) Tns.create_app(cls.app_name, update_modules=True) Tns.install_npm(package=WEBPACK_PACKAGE, option='--save-dev', folder=cls.app_name) + Tns.platform_add_ios(attributes={'--path': cls.app_name, '--frameworkPath': IOS_PACKAGE}) def setUp(self): Tns.kill() From b1a838ae5b0cc736fee5a0f3fc3d9e81a0fbe5bd Mon Sep 17 00:00:00 2001 From: Miroslava Ivanova Date: Thu, 1 Nov 2018 16:02:56 +0200 Subject: [PATCH 15/22] hmr test ios --- tests/hmr/hello_world_js_hmr_ios.py | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/hmr/hello_world_js_hmr_ios.py b/tests/hmr/hello_world_js_hmr_ios.py index ca921721..f18004b4 100644 --- a/tests/hmr/hello_world_js_hmr_ios.py +++ b/tests/hmr/hello_world_js_hmr_ios.py @@ -36,7 +36,6 @@ def setUpClass(cls): def setUp(self): Tns.kill() - Helpers.emulator_cleanup(app_name=self.app_name) BaseClass.setUp(self) def tearDown(self): From 1eedb34487880a4240ca4f8f7962ec53009c7826 Mon Sep 17 00:00:00 2001 From: Miroslava Ivanova Date: Thu, 1 Nov 2018 16:57:40 +0200 Subject: [PATCH 16/22] hmr tests ios --- tests/hmr/helpers_hmr.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/hmr/helpers_hmr.py b/tests/hmr/helpers_hmr.py index 5b331cf3..8f5226f1 100644 --- a/tests/hmr/helpers_hmr.py +++ b/tests/hmr/helpers_hmr.py @@ -20,7 +20,7 @@ class HelpersHMR(object): wp = ['Webpack compilation complete'] run_hmr = ['Webpack compilation complete', 'Successfully installed', 'HMR: Sync', 'HMR: Hot Module Replacement Enabled. Waiting for signal.'] - run_hmr_with_platforms = ['Webpack compilation complete', 'Project successfully prepared', 'HMR: Sync', + run_hmr_with_platforms = ['Webpack compilation complete', 'HMR: Sync', 'HMR: Hot Module Replacement Enabled. Waiting for signal.', 'Successfully synced application', 'Refreshing application on device'] sync_hmr = ['Webpack compilation complete', 'Successfully synced application', From 12501373afe8f0adb153cf33a696751193a59b0b Mon Sep 17 00:00:00 2001 From: Miroslava Ivanova Date: Thu, 1 Nov 2018 17:24:46 +0200 Subject: [PATCH 17/22] hmr test --- tests/hmr/hello_world_js_hmr_ios.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/hmr/hello_world_js_hmr_ios.py b/tests/hmr/hello_world_js_hmr_ios.py index f18004b4..1eb57a9c 100644 --- a/tests/hmr/hello_world_js_hmr_ios.py +++ b/tests/hmr/hello_world_js_hmr_ios.py @@ -52,7 +52,7 @@ def test_001_ios_run_hmr(self): Tns.wait_for_log(log_file=log, string_list=HelpersHMR.run_hmr, not_existing_string_list=HelpersHMR.errors_hmr, timeout=240) - Helpers.ios_screen_match(sim_id=self.SIMULATOR_ID, image=HelpersHMR.image_original, timeout=120) + Helpers.ios_screen_match(sim_id=HelpersHMR.SIMULATOR_ID, image=HelpersHMR.image_original, timeout=120) HelpersHMR.apply_changes(app_name=self.app_name, log=log, platform=Platform.IOS) HelpersHMR.revert_changes(app_name=self.app_name, log=log, platform=Platform.IOS) @@ -62,7 +62,7 @@ def test_002_ios_run_hmr_uninstall_app(self): assert_success=False) Tns.wait_for_log(log_file=log, string_list=HelpersHMR.run_hmr_with_platforms, not_existing_string_list=HelpersHMR.errors_hmr, timeout=240) - Helpers.ios_screen_match(sim_id=self.SIMULATOR_ID, image=HelpersHMR.image_original, timeout=120) + Helpers.ios_screen_match(sim_id=HelpersHMR.SIMULATOR_ID, image=HelpersHMR.image_original, timeout=120) HelpersHMR.apply_changes_js(app_name=self.app_name, log=log, platform=Platform.IOS) @@ -70,7 +70,7 @@ def test_002_ios_run_hmr_uninstall_app(self): Device.uninstall_app(app_prefix='org.nativescript.', platform=Platform.IOS) HelpersHMR.revert_changes_js(app_name=self.app_name, log=log, platform=Platform.IOS) - Helpers.ios_screen_match(sim_id=self.SIMULATOR_ID, image=HelpersHMR.image_original, timeout=120) + Helpers.ios_screen_match(sim_id=HelpersHMR.SIMULATOR_ID, image=HelpersHMR.image_original, timeout=120) def test_003_ios_run_hmr_console_log(self): source_js = os.path.join('data', "issues", 'console-log-hmr', 'main-view-model.js') @@ -82,7 +82,7 @@ def test_003_ios_run_hmr_console_log(self): strings = ['LOG Hello'] Tns.wait_for_log(log_file=log, string_list=strings) - Helpers.ios_screen_match(sim_id=self.SIMULATOR_ID, image=HelpersHMR.image_original, timeout=120) + Helpers.ios_screen_match(sim_id=HelpersHMR.SIMULATOR_ID, image=HelpersHMR.image_original, timeout=120) # def test_004_android_run_hmr_delete_file(self): # log = Tns.run_android(attributes={'--path': self.app_name, '--device': EMULATOR_ID, '--hmr': ''}, wait=False, From 383db4fd651d59dae5720aabcdc65cda6728fdfd Mon Sep 17 00:00:00 2001 From: Miroslava Ivanova Date: Thu, 1 Nov 2018 17:50:35 +0200 Subject: [PATCH 18/22] hmr test --- tests/hmr/hello_world_js_hmr_ios.py | 3 +++ tests/hmr/helpers_hmr.py | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/tests/hmr/hello_world_js_hmr_ios.py b/tests/hmr/hello_world_js_hmr_ios.py index 1eb57a9c..fa120d62 100644 --- a/tests/hmr/hello_world_js_hmr_ios.py +++ b/tests/hmr/hello_world_js_hmr_ios.py @@ -53,6 +53,7 @@ def test_001_ios_run_hmr(self): Tns.wait_for_log(log_file=log, string_list=HelpersHMR.run_hmr, not_existing_string_list=HelpersHMR.errors_hmr, timeout=240) Helpers.ios_screen_match(sim_id=HelpersHMR.SIMULATOR_ID, image=HelpersHMR.image_original, timeout=120) + Helpers.wait_webpack_watcher() HelpersHMR.apply_changes(app_name=self.app_name, log=log, platform=Platform.IOS) HelpersHMR.revert_changes(app_name=self.app_name, log=log, platform=Platform.IOS) @@ -63,6 +64,7 @@ def test_002_ios_run_hmr_uninstall_app(self): Tns.wait_for_log(log_file=log, string_list=HelpersHMR.run_hmr_with_platforms, not_existing_string_list=HelpersHMR.errors_hmr, timeout=240) Helpers.ios_screen_match(sim_id=HelpersHMR.SIMULATOR_ID, image=HelpersHMR.image_original, timeout=120) + Helpers.wait_webpack_watcher() HelpersHMR.apply_changes_js(app_name=self.app_name, log=log, platform=Platform.IOS) @@ -71,6 +73,7 @@ def test_002_ios_run_hmr_uninstall_app(self): HelpersHMR.revert_changes_js(app_name=self.app_name, log=log, platform=Platform.IOS) Helpers.ios_screen_match(sim_id=HelpersHMR.SIMULATOR_ID, image=HelpersHMR.image_original, timeout=120) + Helpers.wait_webpack_watcher() def test_003_ios_run_hmr_console_log(self): source_js = os.path.join('data', "issues", 'console-log-hmr', 'main-view-model.js') diff --git a/tests/hmr/helpers_hmr.py b/tests/hmr/helpers_hmr.py index 8f5226f1..bfd0d373 100644 --- a/tests/hmr/helpers_hmr.py +++ b/tests/hmr/helpers_hmr.py @@ -18,7 +18,7 @@ class HelpersHMR(object): no_wp_run = ['Successfully installed'] no_wp_sync = ['Successfully synced application'] wp = ['Webpack compilation complete'] - run_hmr = ['Webpack compilation complete', 'Successfully installed', 'HMR: Sync', + run_hmr = ['Webpack compilation complete', 'Successfully installed', 'HMR: Sync...', 'HMR: Hot Module Replacement Enabled. Waiting for signal.'] run_hmr_with_platforms = ['Webpack compilation complete', 'HMR: Sync', 'HMR: Hot Module Replacement Enabled. Waiting for signal.', 'Successfully synced application', From 348f27656d7fcd2564e0f5dab723c87eea857bcd Mon Sep 17 00:00:00 2001 From: Miroslava Ivanova Date: Thu, 1 Nov 2018 18:01:24 +0200 Subject: [PATCH 19/22] hmr test --- tests/hmr/helpers_hmr.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/hmr/helpers_hmr.py b/tests/hmr/helpers_hmr.py index bfd0d373..f5effa88 100644 --- a/tests/hmr/helpers_hmr.py +++ b/tests/hmr/helpers_hmr.py @@ -20,7 +20,7 @@ class HelpersHMR(object): wp = ['Webpack compilation complete'] run_hmr = ['Webpack compilation complete', 'Successfully installed', 'HMR: Sync...', 'HMR: Hot Module Replacement Enabled. Waiting for signal.'] - run_hmr_with_platforms = ['Webpack compilation complete', 'HMR: Sync', + run_hmr_with_platforms = ['Webpack compilation complete', 'HMR: Sync...', 'HMR: Hot Module Replacement Enabled. Waiting for signal.', 'Successfully synced application', 'Refreshing application on device'] sync_hmr = ['Webpack compilation complete', 'Successfully synced application', From ea9b72f746f376ed7dabe288db164a3734baf9bb Mon Sep 17 00:00:00 2001 From: Miroslava Ivanova Date: Fri, 9 Nov 2018 17:35:15 +0200 Subject: [PATCH 20/22] test --- tests/hmr/hello_world_js_hmr_android.py | 50 ++++++++++++++++++------- tests/hmr/hello_world_js_hmr_ios.py | 10 ++--- tests/hmr/helpers_hmr.py | 5 ++- 3 files changed, 43 insertions(+), 22 deletions(-) diff --git a/tests/hmr/hello_world_js_hmr_android.py b/tests/hmr/hello_world_js_hmr_android.py index 0b560b5c..8953756c 100644 --- a/tests/hmr/hello_world_js_hmr_android.py +++ b/tests/hmr/hello_world_js_hmr_android.py @@ -5,12 +5,13 @@ from core.base_class.BaseClass import BaseClass from core.device.device import Device from core.device.emulator import Emulator +from core.device.helpers.adb import Adb from core.device.simulator import Simulator from core.osutils.file import File from core.osutils.os_type import OSType from core.settings.settings import ANDROID_KEYSTORE_PATH, \ ANDROID_KEYSTORE_PASS, ANDROID_KEYSTORE_ALIAS, ANDROID_KEYSTORE_ALIAS_PASS, EMULATOR_ID, CURRENT_OS, \ - IOS_PACKAGE, SIMULATOR_NAME, ANDROID_PACKAGE, WEBPACK_PACKAGE + IOS_PACKAGE, SIMULATOR_NAME, ANDROID_PACKAGE, WEBPACK_PACKAGE, EMULATOR_NAME from core.tns.replace_helper import ReplaceHelper from core.tns.tns import Tns from core.tns.tns_platform_type import Platform @@ -80,19 +81,40 @@ def test_002_android_run_hmr_uninstall_app(self): HelpersHMR.revert_changes_js(app_name=self.app_name, log=log, platform=Platform.ANDROID) Helpers.android_screen_match(image=HelpersHMR.image_original, timeout=120) - def test_003_android_run_hmr_console_log(self): - source_js = os.path.join('data', "issues", 'console-log-hmr', 'main-view-model.js') - target_js = os.path.join(self.app_name, 'app', 'main-view-model.js') - File.copy(src=source_js, dest=target_js) - + def test_003_android_run_hmr_wrong_xml(self): log = Tns.run_android(attributes={'--path': self.app_name, '--device': EMULATOR_ID, '--hmr': ''}, wait=False, - assert_success=False) - strings = ['LOG Hello'] - Tns.wait_for_log(log_file=log, string_list=strings) - - Helpers.android_screen_match(image=HelpersHMR.image_original, timeout=120) - - # def test_004_android_run_hmr_delete_file(self): + assert_success=False) + # Break the app with invalid xml changes + ReplaceHelper.replace(self.app_name, ReplaceHelper.CHANGE_XML_INVALID_SYNTAX) + + # Verify console notify user for broken xml + strings = ['com.tns.NativeScriptException', 'Parsing XML at', 'Successfully synced application', EMULATOR_ID] + Tns.wait_for_log(log_file=log, string_list=strings, timeout=120, check_interval=10) + assert Adb.wait_for_text(device_id=EMULATOR_ID, text="Exception", timeout=30), "Error activity not found!" + + # Revert changes + ReplaceHelper.rollback(self.app_name, ReplaceHelper.CHANGE_XML_INVALID_SYNTAX) + strings = ['JS: HMR: Sync...', 'JS: HMR: Hot Module Replacement Enabled. Waiting for signal.', + 'Successfully synced application', EMULATOR_ID] + Tns.wait_for_log(log_file=log, string_list=strings, timeout=120, check_interval=10) + + # Verify app looks correct inside emulator + Device.screen_match(device_name=EMULATOR_NAME, device_id=EMULATOR_ID, + expected_image='livesync-hello-world_home') + + # def test_008_android_run_hmr_console_log(self): + # source_js = os.path.join('data', "issues", 'console-log-hmr', 'main-view-model.js') + # target_js = os.path.join(self.app_name, 'app', 'main-view-model.js') + # File.copy(src=source_js, dest=target_js) + # + # log = Tns.run_android(attributes={'--path': self.app_name, '--device': EMULATOR_ID, '--hmr': ''}, wait=False, + # assert_success=False) + # strings = ['LOG Hello'] + # Tns.wait_for_log(log_file=log, string_list=strings) + # + # Helpers.android_screen_match(image=HelpersHMR.image_original, timeout=120) + # + # def test_009_android_run_hmr_delete_file(self): # log = Tns.run_android(attributes={'--path': self.app_name, '--device': EMULATOR_ID, '--hmr': ''}, wait=False, # assert_success=False) # @@ -102,4 +124,4 @@ def test_003_android_run_hmr_console_log(self): # File.remove(self.app_name + 'app', 'main-view-model.js') # # self.apply_changes(app_name=self.app_name, log=log, platform=Platform.ANDROID) - # self.revert_changes(app_name=self.app_name, log=log, platform=Platform.ANDROID) \ No newline at end of file + # self.revert_changes(app_name=self.app_name, log=log, platform=Platform.ANDROID) diff --git a/tests/hmr/hello_world_js_hmr_ios.py b/tests/hmr/hello_world_js_hmr_ios.py index fa120d62..2c0adcb7 100644 --- a/tests/hmr/hello_world_js_hmr_ios.py +++ b/tests/hmr/hello_world_js_hmr_ios.py @@ -19,8 +19,6 @@ # import hashlib # import re - - class HelloWorldJSHMRIOS(BaseClass): @@ -52,7 +50,7 @@ def test_001_ios_run_hmr(self): Tns.wait_for_log(log_file=log, string_list=HelpersHMR.run_hmr, not_existing_string_list=HelpersHMR.errors_hmr, timeout=240) - Helpers.ios_screen_match(sim_id=HelpersHMR.SIMULATOR_ID, image=HelpersHMR.image_original, timeout=120) + Helpers.ios_screen_match(sim_id=self.SIMULATOR_ID, image=HelpersHMR.image_original, timeout=120) Helpers.wait_webpack_watcher() HelpersHMR.apply_changes(app_name=self.app_name, log=log, platform=Platform.IOS) @@ -63,7 +61,7 @@ def test_002_ios_run_hmr_uninstall_app(self): assert_success=False) Tns.wait_for_log(log_file=log, string_list=HelpersHMR.run_hmr_with_platforms, not_existing_string_list=HelpersHMR.errors_hmr, timeout=240) - Helpers.ios_screen_match(sim_id=HelpersHMR.SIMULATOR_ID, image=HelpersHMR.image_original, timeout=120) + Helpers.ios_screen_match(sim_id=self.SIMULATOR_ID, image=HelpersHMR.image_original, timeout=120) Helpers.wait_webpack_watcher() HelpersHMR.apply_changes_js(app_name=self.app_name, log=log, platform=Platform.IOS) @@ -72,7 +70,7 @@ def test_002_ios_run_hmr_uninstall_app(self): Device.uninstall_app(app_prefix='org.nativescript.', platform=Platform.IOS) HelpersHMR.revert_changes_js(app_name=self.app_name, log=log, platform=Platform.IOS) - Helpers.ios_screen_match(sim_id=HelpersHMR.SIMULATOR_ID, image=HelpersHMR.image_original, timeout=120) + Helpers.ios_screen_match(sim_id=self.SIMULATOR_ID, image=HelpersHMR.image_original, timeout=120) Helpers.wait_webpack_watcher() def test_003_ios_run_hmr_console_log(self): @@ -85,7 +83,7 @@ def test_003_ios_run_hmr_console_log(self): strings = ['LOG Hello'] Tns.wait_for_log(log_file=log, string_list=strings) - Helpers.ios_screen_match(sim_id=HelpersHMR.SIMULATOR_ID, image=HelpersHMR.image_original, timeout=120) + Helpers.ios_screen_match(sim_id=self.SIMULATOR_ID, image=HelpersHMR.image_original, timeout=120) # def test_004_android_run_hmr_delete_file(self): # log = Tns.run_android(attributes={'--path': self.app_name, '--device': EMULATOR_ID, '--hmr': ''}, wait=False, diff --git a/tests/hmr/helpers_hmr.py b/tests/hmr/helpers_hmr.py index f5effa88..f20a80a3 100644 --- a/tests/hmr/helpers_hmr.py +++ b/tests/hmr/helpers_hmr.py @@ -11,6 +11,7 @@ from core.tns.tns import Tns from core.tns.replace_helper import ReplaceHelper from core.tns.tns_platform_type import Platform +from tests.hmr.hello_world_js_hmr_ios import HelloWorldJSHMRIOS from tests.webpack.helpers.helpers import Helpers @@ -77,7 +78,7 @@ def apply_changes(app_name, log, platform): if platform == Platform.ANDROID: Helpers.android_screen_match(image=HelpersHMR.image_change, timeout=120) if platform == Platform.IOS: - Helpers.ios_screen_match(sim_id=HelpersHMR.SIMULATOR_ID, image=HelpersHMR.image_change, + Helpers.ios_screen_match(sim_id=HelloWorldJSHMRIOS.setUpClass().SIMULATOR_ID, image=HelpersHMR.image_change, timeout=120) @staticmethod @@ -159,5 +160,5 @@ def revert_changes(app_name, log, platform): if platform == Platform.ANDROID: Helpers.android_screen_match(image=HelpersHMR.image_original, timeout=120) if platform == Platform.IOS: - Helpers.ios_screen_match(sim_id=HelpersHMR.SIMULATOR_ID, image=HelpersHMR.image_original, + Helpers.ios_screen_match(sim_id=HelloWorldJSHMRIOS.SIMULATOR_ID, image=HelpersHMR.image_original, timeout=120) From 4cf0c96da5958ef5751f3d11dff948d8299fd42a Mon Sep 17 00:00:00 2001 From: Miroslava Ivanova Date: Tue, 13 Nov 2018 08:37:26 +0200 Subject: [PATCH 21/22] test --- tests/hmr/hello_world_js_hmr_android.py | 38 ++++++++++++++++--------- tests/hmr/hello_world_js_hmr_ios.py | 26 +++++++++++++++-- tests/hmr/helpers_hmr.py | 15 +++++----- tests/webpack/helpers/helpers.py | 10 +++++++ 4 files changed, 66 insertions(+), 23 deletions(-) diff --git a/tests/hmr/hello_world_js_hmr_android.py b/tests/hmr/hello_world_js_hmr_android.py index 8953756c..24473f90 100644 --- a/tests/hmr/hello_world_js_hmr_android.py +++ b/tests/hmr/hello_world_js_hmr_android.py @@ -81,13 +81,22 @@ def test_002_android_run_hmr_uninstall_app(self): HelpersHMR.revert_changes_js(app_name=self.app_name, log=log, platform=Platform.ANDROID) Helpers.android_screen_match(image=HelpersHMR.image_original, timeout=120) + @unittest.skip("https://github.com/NativeScript/nativescript-cli/issues/4123") def test_003_android_run_hmr_wrong_xml(self): log = Tns.run_android(attributes={'--path': self.app_name, '--device': EMULATOR_ID, '--hmr': ''}, wait=False, assert_success=False) + Tns.wait_for_log(log_file=log, string_list=HelpersHMR.run_hmr, + not_existing_string_list=HelpersHMR.errors_hmr, timeout=240) + + # Verify app looks correct inside emulator + Device.screen_match(device_name=EMULATOR_NAME, device_id=EMULATOR_ID, + expected_image=HelpersHMR.image_original) + # Break the app with invalid xml changes ReplaceHelper.replace(self.app_name, ReplaceHelper.CHANGE_XML_INVALID_SYNTAX) # Verify console notify user for broken xml + # strings = ['for activity org.nativescript.TestApp / com.tns.ErrorReportActivity'] strings = ['com.tns.NativeScriptException', 'Parsing XML at', 'Successfully synced application', EMULATOR_ID] Tns.wait_for_log(log_file=log, string_list=strings, timeout=120, check_interval=10) assert Adb.wait_for_text(device_id=EMULATOR_ID, text="Exception", timeout=30), "Error activity not found!" @@ -100,20 +109,23 @@ def test_003_android_run_hmr_wrong_xml(self): # Verify app looks correct inside emulator Device.screen_match(device_name=EMULATOR_NAME, device_id=EMULATOR_ID, - expected_image='livesync-hello-world_home') + expected_image=HelpersHMR.image_original) + + def test_008_android_run_hmr_console_log(self): + source_js = os.path.join('data', "issues", 'console-log-hmr', 'main-view-model.js') + target_js = os.path.join(self.app_name, 'app', 'main-view-model.js') + File.copy(src=source_js, dest=target_js) + + log = Tns.run_android(attributes={'--path': self.app_name, '--device': EMULATOR_ID, '--hmr': ''}, wait=False, + assert_success=False) + + strings = ['LOG Hello'] + Tns.wait_for_log(log_file=log, string_list=strings, timeout=120, check_interval=10) + + # Verify app looks correct inside emulator + Device.screen_match(device_name=EMULATOR_NAME, device_id=EMULATOR_ID, + expected_image=HelpersHMR.image_original) - # def test_008_android_run_hmr_console_log(self): - # source_js = os.path.join('data', "issues", 'console-log-hmr', 'main-view-model.js') - # target_js = os.path.join(self.app_name, 'app', 'main-view-model.js') - # File.copy(src=source_js, dest=target_js) - # - # log = Tns.run_android(attributes={'--path': self.app_name, '--device': EMULATOR_ID, '--hmr': ''}, wait=False, - # assert_success=False) - # strings = ['LOG Hello'] - # Tns.wait_for_log(log_file=log, string_list=strings) - # - # Helpers.android_screen_match(image=HelpersHMR.image_original, timeout=120) - # # def test_009_android_run_hmr_delete_file(self): # log = Tns.run_android(attributes={'--path': self.app_name, '--device': EMULATOR_ID, '--hmr': ''}, wait=False, # assert_success=False) diff --git a/tests/hmr/hello_world_js_hmr_ios.py b/tests/hmr/hello_world_js_hmr_ios.py index 2c0adcb7..3fbc2b37 100644 --- a/tests/hmr/hello_world_js_hmr_ios.py +++ b/tests/hmr/hello_world_js_hmr_ios.py @@ -54,7 +54,11 @@ def test_001_ios_run_hmr(self): Helpers.wait_webpack_watcher() HelpersHMR.apply_changes(app_name=self.app_name, log=log, platform=Platform.IOS) + Helpers.ios_screen_match(sim_id=self.SIMULATOR_ID, image=HelpersHMR.image_change, + timeout=120) HelpersHMR.revert_changes(app_name=self.app_name, log=log, platform=Platform.IOS) + Helpers.ios_screen_match(sim_id=self.SIMULATOR_ID, image=HelpersHMR.image_original, + timeout=120) def test_002_ios_run_hmr_uninstall_app(self): log = Tns.run_ios(attributes={'--path': self.app_name, '--emulator': '', '--hmr': ''}, wait=False, @@ -67,13 +71,31 @@ def test_002_ios_run_hmr_uninstall_app(self): HelpersHMR.apply_changes_js(app_name=self.app_name, log=log, platform=Platform.IOS) # Uninstall app while `tns run` is running - Device.uninstall_app(app_prefix='org.nativescript.', platform=Platform.IOS) + Simulator.uninstall("org.nativescript." + self.app_name) HelpersHMR.revert_changes_js(app_name=self.app_name, log=log, platform=Platform.IOS) Helpers.ios_screen_match(sim_id=self.SIMULATOR_ID, image=HelpersHMR.image_original, timeout=120) Helpers.wait_webpack_watcher() - def test_003_ios_run_hmr_console_log(self): + @unittest.skip("https://github.com/NativeScript/nativescript-cli/issues/4123") + def test_003_ios_run_hmr_wrong_xml(self): + log = Tns.run_ios(attributes={'--path': self.app_name, '--emulator': '', '--hmr': ''}, wait=False, + assert_success=False) + Tns.wait_for_log(log_file=log, string_list=HelpersHMR.run_hmr_with_platforms, not_existing_string_list=HelpersHMR.errors_hmr, + timeout=240) + Helpers.ios_screen_match(sim_id=self.SIMULATOR_ID, image=HelpersHMR.image_original, timeout=120) + Helpers.wait_webpack_watcher() + + HelpersHMR.apply_changes_js(app_name=self.app_name, log=log, platform=Platform.IOS) + + # Uninstall app while `tns run` is running + Simulator.uninstall("org.nativescript." + self.app_name) + + HelpersHMR.revert_changes_js(app_name=self.app_name, log=log, platform=Platform.IOS) + Helpers.ios_screen_match(sim_id=self.SIMULATOR_ID, image=HelpersHMR.image_original, timeout=120) + Helpers.wait_webpack_watcher() + + def test_008_ios_run_hmr_console_log(self): source_js = os.path.join('data', "issues", 'console-log-hmr', 'main-view-model.js') target_js = os.path.join(self.app_name, 'app', 'main-view-model.js') File.copy(src=source_js, dest=target_js) diff --git a/tests/hmr/helpers_hmr.py b/tests/hmr/helpers_hmr.py index f20a80a3..e0dcc40a 100644 --- a/tests/hmr/helpers_hmr.py +++ b/tests/hmr/helpers_hmr.py @@ -11,7 +11,6 @@ from core.tns.tns import Tns from core.tns.replace_helper import ReplaceHelper from core.tns.tns_platform_type import Platform -from tests.hmr.hello_world_js_hmr_ios import HelloWorldJSHMRIOS from tests.webpack.helpers.helpers import Helpers @@ -77,9 +76,9 @@ def apply_changes(app_name, log, platform): # Verify application looks correct if platform == Platform.ANDROID: Helpers.android_screen_match(image=HelpersHMR.image_change, timeout=120) - if platform == Platform.IOS: - Helpers.ios_screen_match(sim_id=HelloWorldJSHMRIOS.setUpClass().SIMULATOR_ID, image=HelpersHMR.image_change, - timeout=120) + # if platform == Platform.IOS: + # Helpers.ios_screen_match(sim_id=self.SIMULATOR_ID, image=HelpersHMR.image_change, + # timeout=120) @staticmethod def apply_changes_js(app_name, log, platform): @@ -109,7 +108,7 @@ def revert_changes_js(app_name, log, platform): # Change JS ReplaceHelper.rollback(app_name, HelpersHMR.js_change, sleep=10) strings = ['Refreshing application on device', - 'HMR: Sync...','JS: HMR: Hot Module Replacement Enabled. Waiting for signal.'] + 'HMR: Sync...','HMR: Hot Module Replacement Enabled. Waiting for signal.'] Tns.wait_for_log(log_file=log, string_list=strings) if platform == Platform.ANDROID: text_changed = Device.wait_for_text(device_id=EMULATOR_ID, text='42 taps left', timeout=20) @@ -159,6 +158,6 @@ def revert_changes(app_name, log, platform): timeout=60) if platform == Platform.ANDROID: Helpers.android_screen_match(image=HelpersHMR.image_original, timeout=120) - if platform == Platform.IOS: - Helpers.ios_screen_match(sim_id=HelloWorldJSHMRIOS.SIMULATOR_ID, image=HelpersHMR.image_original, - timeout=120) + # if platform == Platform.IOS: + # Helpers.ios_screen_match(sim_id=self.SIMULATOR_ID, image=HelpersHMR.image_original, + # timeout=120) diff --git a/tests/webpack/helpers/helpers.py b/tests/webpack/helpers/helpers.py index c5d5ef64..6a82ffea 100644 --- a/tests/webpack/helpers/helpers.py +++ b/tests/webpack/helpers/helpers.py @@ -22,6 +22,16 @@ class Helpers(object): 'HMR: Checking for updates to the bundle.'] wp_errors_hmr = ['Module build failed', 'ENOENT'] + #HMR + run_hmr = ['Webpack compilation complete', 'Successfully installed', 'HMR: Sync...', + 'HMR: Hot Module Replacement Enabled. Waiting for signal.'] + run_hmr_with_platforms = ['Webpack compilation complete', 'HMR: Sync...', + 'HMR: Hot Module Replacement Enabled. Waiting for signal.', 'Successfully synced application', + 'Refreshing application on device'] + sync_hmr = ['Webpack compilation complete', 'Successfully synced application', + 'HMR: Checking for updates to the bundle.'] + errors_hmr = ['Module build failed', 'ENOENT'] + wp_run = ['Webpack compilation complete', 'Successfully installed'] wp_sync = ['Webpack compilation complete', 'Successfully synced application'] wp_sync_snapshot = ['Webpack compilation complete', 'Successfully synced app', 'Stripping the snapshot flag.'] From 06af03e9725ac41a670e225a9156620c2001f146 Mon Sep 17 00:00:00 2001 From: Miroslava Ivanova Date: Thu, 13 Dec 2018 15:11:24 +0200 Subject: [PATCH 22/22] add fix --- tests/hmr/hello_world_js_hmr_android.py | 41 +++++++++---------------- tests/hmr/hello_world_js_hmr_ios.py | 34 +++++++++----------- 2 files changed, 29 insertions(+), 46 deletions(-) diff --git a/tests/hmr/hello_world_js_hmr_android.py b/tests/hmr/hello_world_js_hmr_android.py index 24473f90..e0d58363 100644 --- a/tests/hmr/hello_world_js_hmr_android.py +++ b/tests/hmr/hello_world_js_hmr_android.py @@ -1,17 +1,12 @@ -import unittest - import os +import unittest from core.base_class.BaseClass import BaseClass from core.device.device import Device from core.device.emulator import Emulator from core.device.helpers.adb import Adb -from core.device.simulator import Simulator from core.osutils.file import File -from core.osutils.os_type import OSType -from core.settings.settings import ANDROID_KEYSTORE_PATH, \ - ANDROID_KEYSTORE_PASS, ANDROID_KEYSTORE_ALIAS, ANDROID_KEYSTORE_ALIAS_PASS, EMULATOR_ID, CURRENT_OS, \ - IOS_PACKAGE, SIMULATOR_NAME, ANDROID_PACKAGE, WEBPACK_PACKAGE, EMULATOR_NAME +from core.settings.settings import EMULATOR_ID, ANDROID_PACKAGE, WEBPACK_PACKAGE, EMULATOR_NAME from core.tns.replace_helper import ReplaceHelper from core.tns.tns import Tns from core.tns.tns_platform_type import Platform @@ -22,14 +17,7 @@ class HelloWorldJSHMRAndroid(BaseClass): - # SIMULATOR_ID = "" - # - # image_original = 'hello-world-js' - # image_change = 'hello-world-js-js-css-xml' - # - # xml_change = ['app/main-page.xml', 'TAP', 'TEST'] - # js_change = ['app/main-view-model.js', 'taps', 'clicks'] - # css_change = ['app/app.css', '18', '32'] + @classmethod def setUpClass(cls): @@ -126,14 +114,15 @@ def test_008_android_run_hmr_console_log(self): Device.screen_match(device_name=EMULATOR_NAME, device_id=EMULATOR_ID, expected_image=HelpersHMR.image_original) - # def test_009_android_run_hmr_delete_file(self): - # log = Tns.run_android(attributes={'--path': self.app_name, '--device': EMULATOR_ID, '--hmr': ''}, wait=False, - # assert_success=False) - # - # Tns.wait_for_log(log_file=log, string_list=HelpersHMR.wp_run, not_existing_string_list=HelpersHMR.wp_errors, - # timeout=240) - # HelpersHMR.android_screen_match(image=self.image_original, timeout=120) - # File.remove(self.app_name + 'app', 'main-view-model.js') - # - # self.apply_changes(app_name=self.app_name, log=log, platform=Platform.ANDROID) - # self.revert_changes(app_name=self.app_name, log=log, platform=Platform.ANDROID) + @unittest.skip("Don't clear behavior") + def test_009_android_run_hmr_delete_file(self): + log = Tns.run_android(attributes={'--path': self.app_name, '--device': EMULATOR_ID, '--hmr': ''}, wait=False, + assert_success=False) + + Tns.wait_for_log(log_file=log, string_list=HelpersHMR.wp_run, not_existing_string_list=HelpersHMR.wp_errors, + timeout=240) + HelpersHMR.android_screen_match(image=self.image_original, timeout=120) + File.remove(self.app_name + 'app', 'main-view-model.js') + + self.apply_changes(app_name=self.app_name, log=log, platform=Platform.ANDROID) + self.revert_changes(app_name=self.app_name, log=log, platform=Platform.ANDROID) diff --git a/tests/hmr/hello_world_js_hmr_ios.py b/tests/hmr/hello_world_js_hmr_ios.py index 3fbc2b37..69b1b4fb 100644 --- a/tests/hmr/hello_world_js_hmr_ios.py +++ b/tests/hmr/hello_world_js_hmr_ios.py @@ -1,17 +1,10 @@ -import unittest - import os +import unittest from core.base_class.BaseClass import BaseClass -from core.device.device import Device -from core.device.emulator import Emulator from core.device.simulator import Simulator from core.osutils.file import File -from core.osutils.os_type import OSType -from core.settings.settings import ANDROID_KEYSTORE_PATH, \ - ANDROID_KEYSTORE_PASS, ANDROID_KEYSTORE_ALIAS, ANDROID_KEYSTORE_ALIAS_PASS, EMULATOR_ID, CURRENT_OS, \ - IOS_PACKAGE, SIMULATOR_NAME, ANDROID_PACKAGE, WEBPACK_PACKAGE -from core.tns.replace_helper import ReplaceHelper +from core.settings.settings import IOS_PACKAGE, SIMULATOR_NAME, WEBPACK_PACKAGE, EMULATOR_ID from core.tns.tns import Tns from core.tns.tns_platform_type import Platform from tests.hmr.helpers_hmr import HelpersHMR @@ -107,14 +100,15 @@ def test_008_ios_run_hmr_console_log(self): Helpers.ios_screen_match(sim_id=self.SIMULATOR_ID, image=HelpersHMR.image_original, timeout=120) - # def test_004_android_run_hmr_delete_file(self): - # log = Tns.run_android(attributes={'--path': self.app_name, '--device': EMULATOR_ID, '--hmr': ''}, wait=False, - # assert_success=False) - # - # Tns.wait_for_log(log_file=log, string_list=HelpersHMR.wp_run, not_existing_string_list=HelpersHMR.wp_errors, - # timeout=240) - # HelpersHMR.android_screen_match(image=self.image_original, timeout=120) - # File.remove(self.app_name + 'app', 'main-view-model.js') - # - # self.apply_changes(app_name=self.app_name, log=log, platform=Platform.ANDROID) - # self.revert_changes(app_name=self.app_name, log=log, platform=Platform.ANDROID) \ No newline at end of file + @unittest.skip("Don't clear behavior") + def test_004_android_run_hmr_delete_file(self): + log = Tns.run_android(attributes={'--path': self.app_name, '--device': EMULATOR_ID, '--hmr': ''}, wait=False, + assert_success=False) + + Tns.wait_for_log(log_file=log, string_list=HelpersHMR.wp_run, not_existing_string_list=HelpersHMR.wp_errors, + timeout=240) + HelpersHMR.android_screen_match(image=self.image_original, timeout=120) + File.remove(self.app_name + 'app', 'main-view-model.js') + + self.apply_changes(app_name=self.app_name, log=log, platform=Platform.ANDROID) + self.revert_changes(app_name=self.app_name, log=log, platform=Platform.ANDROID) \ No newline at end of file