├── .gitignore ├── .idea ├── .gitignore ├── LambdaTest-Selenium4-Java-Tutorial.iml ├── aws.xml ├── checkstyle-idea.xml ├── compiler.xml ├── jarRepositories.xml ├── libraries │ ├── Maven__antlr_antlr_2_7_2.xml │ ├── Maven__aopalliance_aopalliance_1_0.xml │ ├── Maven__com_aventstack_extentreports_5_0_9.xml │ ├── Maven__com_epam_reportportal_agent_java_junit_5_1_1.xml │ ├── Maven__com_epam_reportportal_client_java_5_1_9.xml │ ├── Maven__com_epam_reportportal_commons_model_5_0_0.xml │ ├── Maven__com_fasterxml_jackson_core_jackson_annotations_2_13_0.xml │ ├── Maven__com_fasterxml_jackson_core_jackson_core_2_13_0.xml │ ├── Maven__com_fasterxml_jackson_core_jackson_databind_2_13_0.xml │ ├── Maven__com_google_auto_auto_common_1_2.xml │ ├── Maven__com_google_auto_service_auto_service_1_0_1.xml │ ├── Maven__com_google_auto_service_auto_service_annotations_1_0_1.xml │ ├── Maven__com_google_code_findbugs_jsr305_3_0_2.xml │ ├── Maven__com_google_code_gson_gson_2_8_6.xml │ ├── Maven__com_google_guava_failureaccess_1_0_1.xml │ ├── Maven__com_google_guava_listenablefuture_9999_0_empty_to_avoid_conflict_with_guava.xml │ ├── Maven__com_google_inject_guice_no_aop_4_2_2.xml │ ├── Maven__com_google_j2objc_j2objc_annotations_1_3.xml │ ├── Maven__com_nordstrom_tools_guava_agent_30_1_1a.xml │ ├── Maven__com_nordstrom_tools_java_utils_2_1_0.xml │ ├── Maven__com_nordstrom_tools_junit_foundation_15_3_5.xml │ ├── Maven__com_nordstrom_tools_settings_2_3_10.xml │ ├── Maven__com_squareup_okhttp3_logging_interceptor_3_14_9.xml │ ├── Maven__com_squareup_okhttp3_okhttp_3_14_9.xml │ ├── Maven__com_squareup_okio_okio_1_17_2.xml │ ├── Maven__com_squareup_retrofit2_adapter_rxjava2_2_9_0.xml │ ├── Maven__com_squareup_retrofit2_converter_jackson_2_9_0.xml │ ├── Maven__com_squareup_retrofit2_converter_scalars_2_9_0.xml │ ├── Maven__com_squareup_retrofit2_retrofit_2_9_0.xml │ ├── Maven__com_sun_activation_jakarta_activation_1_2_2.xml │ ├── Maven__com_thoughtworks_qdox_qdox_2_0_0.xml │ ├── Maven__com_typesafe_netty_netty_reactive_streams_2_0_4.xml │ ├── Maven__commons_beanutils_commons_beanutils_1_9_4.xml │ ├── Maven__commons_chain_commons_chain_1_1.xml │ ├── Maven__commons_codec_commons_codec_1_13.xml │ ├── Maven__commons_collections_commons_collections_3_2_2.xml │ ├── Maven__commons_digester_commons_digester_1_8.xml │ ├── Maven__commons_io_commons_io_2_8_0.xml │ ├── Maven__commons_lang_commons_lang_2_4.xml │ ├── Maven__commons_logging_commons_logging_1_2.xml │ ├── Maven__commons_validator_commons_validator_1_3_1.xml │ ├── Maven__dom4j_dom4j_1_1.xml │ ├── Maven__io_github_bonigarcia_webdrivermanager_4_3_1.xml │ ├── Maven__io_netty_netty_codec_socks_4_1_60_Final.xml │ ├── Maven__io_netty_netty_handler_proxy_4_1_60_Final.xml │ ├── Maven__io_netty_netty_transport_native_epoll_linux_x86_64_4_1_60_Final.xml │ ├── Maven__io_netty_netty_transport_native_kqueue_osx_x86_64_4_1_60_Final.xml │ ├── Maven__io_ous_jtoml_2_0_0.xml │ ├── Maven__io_qameta_allure_allure_maven_2_11_2.xml │ ├── Maven__io_reactivex_rxjava2_rxjava_2_2_10.xml │ ├── Maven__io_reactivex_rxjava3_rxjava_3_0_4.xml │ ├── Maven__io_swagger_swagger_annotations_1_5_24.xml │ ├── Maven__javax_annotation_javax_annotation_api_1_2.xml │ ├── Maven__javax_inject_javax_inject_1.xml │ ├── Maven__javax_validation_validation_api_2_0_1_Final.xml │ ├── Maven__junit_junit_4_13_2.xml │ ├── Maven__net_lingala_zip4j_zip4j_1_3_2.xml │ ├── Maven__org_apache_commons_commons_compress_1_20.xml │ ├── Maven__org_apache_commons_commons_configuration2_2_3.xml │ ├── Maven__org_apache_commons_commons_exec_1_3.xml │ ├── Maven__org_apache_commons_commons_lang3_3_11.xml │ ├── Maven__org_apache_httpcomponents_client5_httpclient5_5_0_3.xml │ ├── Maven__org_apache_httpcomponents_core5_httpcore5_5_0_2.xml │ ├── Maven__org_apache_httpcomponents_core5_httpcore5_h2_5_0_2.xml │ ├── Maven__org_apache_httpcomponents_httpclient_4_5_13.xml │ ├── Maven__org_apache_httpcomponents_httpcore_4_4_13.xml │ ├── Maven__org_apache_maven_doxia_doxia_core_1_7.xml │ ├── Maven__org_apache_maven_doxia_doxia_decoration_model_1_7_4.xml │ ├── Maven__org_apache_maven_doxia_doxia_logging_api_1_7.xml │ ├── Maven__org_apache_maven_doxia_doxia_module_xhtml_1_7.xml │ ├── Maven__org_apache_maven_doxia_doxia_sink_api_1_7.xml │ ├── Maven__org_apache_maven_doxia_doxia_site_renderer_1_7_4.xml │ ├── Maven__org_apache_maven_doxia_doxia_skin_model_1_7_4.xml │ ├── Maven__org_apache_maven_maven_artifact_3_8_3.xml │ ├── Maven__org_apache_maven_maven_builder_support_3_8_3.xml │ ├── Maven__org_apache_maven_maven_core_3_8_3.xml │ ├── Maven__org_apache_maven_maven_jxr_3_1_1.xml │ ├── Maven__org_apache_maven_maven_model_3_8_3.xml │ ├── Maven__org_apache_maven_maven_model_builder_3_8_3.xml │ ├── Maven__org_apache_maven_maven_plugin_api_3_8_3.xml │ ├── Maven__org_apache_maven_maven_repository_metadata_3_8_3.xml │ ├── Maven__org_apache_maven_maven_resolver_provider_3_8_3.xml │ ├── Maven__org_apache_maven_maven_settings_3_8_3.xml │ ├── Maven__org_apache_maven_maven_settings_builder_3_8_3.xml │ ├── Maven__org_apache_maven_plugin_tools_maven_plugin_annotations_3_6_1.xml │ ├── Maven__org_apache_maven_plugins_maven_jxr_plugin_3_1_1.xml │ ├── Maven__org_apache_maven_reporting_maven_reporting_api_3_0.xml │ ├── Maven__org_apache_maven_reporting_maven_reporting_impl_3_0_0.xml │ ├── Maven__org_apache_maven_resolver_maven_resolver_api_1_6_3.xml │ ├── Maven__org_apache_maven_resolver_maven_resolver_impl_1_6_3.xml │ ├── Maven__org_apache_maven_resolver_maven_resolver_spi_1_6_3.xml │ ├── Maven__org_apache_maven_resolver_maven_resolver_util_1_6_3.xml │ ├── Maven__org_apache_maven_shared_maven_artifact_transfer_0_13_1.xml │ ├── Maven__org_apache_maven_shared_maven_common_artifact_filters_3_1_0.xml │ ├── Maven__org_apache_maven_shared_maven_shared_utils_3_3_4.xml │ ├── Maven__org_apache_maven_wagon_wagon_provider_api_2_4.xml │ ├── Maven__org_apache_struts_struts_core_1_3_8.xml │ ├── Maven__org_apache_struts_struts_taglib_1_3_8.xml │ ├── Maven__org_apache_struts_struts_tiles_1_3_8.xml │ ├── Maven__org_apache_velocity_velocity_1_7.xml │ ├── Maven__org_apache_velocity_velocity_engine_core_2_0.xml │ ├── Maven__org_apache_velocity_velocity_tools_2_0.xml │ ├── Maven__org_apiguardian_apiguardian_api_1_1_2.xml │ ├── Maven__org_aspectj_aspectjrt_1_9_2.xml │ ├── Maven__org_aspectj_aspectjweaver_1_9_2.xml │ ├── Maven__org_asynchttpclient_async_http_client_2_12_3.xml │ ├── Maven__org_asynchttpclient_async_http_client_netty_utils_2_12_3.xml │ ├── Maven__org_checkerframework_checker_qual_3_12_0.xml │ ├── Maven__org_codehaus_plexus_plexus_cipher_2_0.xml │ ├── Maven__org_codehaus_plexus_plexus_classworlds_2_6_0.xml │ ├── Maven__org_codehaus_plexus_plexus_component_annotations_2_1_0.xml │ ├── Maven__org_codehaus_plexus_plexus_container_default_1_0_alpha_30.xml │ ├── Maven__org_codehaus_plexus_plexus_i18n_1_0_beta_7.xml │ ├── Maven__org_codehaus_plexus_plexus_interpolation_1_26.xml │ ├── Maven__org_codehaus_plexus_plexus_java_1_0_6.xml │ ├── Maven__org_codehaus_plexus_plexus_sec_dispatcher_2_0.xml │ ├── Maven__org_codehaus_plexus_plexus_utils_3_3_0.xml │ ├── Maven__org_codehaus_plexus_plexus_velocity_1_2.xml │ ├── Maven__org_eclipse_sisu_org_eclipse_sisu_inject_0_3_5.xml │ ├── Maven__org_eclipse_sisu_org_eclipse_sisu_plexus_0_3_5.xml │ ├── Maven__org_freemarker_freemarker_2_3_30.xml │ ├── Maven__org_hamcrest_hamcrest_core_1_3.xml │ ├── Maven__org_jsoup_jsoup_1_13_1.xml │ ├── Maven__org_junit_jupiter_junit_jupiter_params_5_8_1.xml │ ├── Maven__org_junit_platform_junit_platform_launcher_1_8_2.xml │ ├── Maven__org_opentest4j_opentest4j_1_2_0.xml │ ├── Maven__org_ow2_asm_asm_9_0.xml │ ├── Maven__org_projectlombok_lombok_1_18_12.xml │ ├── Maven__org_projectlombok_lombok_1_18_24.xml │ ├── Maven__org_rauschig_jarchivelib_1_1_0.xml │ ├── Maven__org_reactivestreams_reactive_streams_1_0_3.xml │ ├── Maven__org_seleniumhq_selenium_selenium_chrome_driver_4_1_0.xml │ ├── Maven__org_seleniumhq_selenium_selenium_chromium_driver_4_1_0.xml │ ├── Maven__org_seleniumhq_selenium_selenium_devtools_v85_4_1_0.xml │ ├── Maven__org_seleniumhq_selenium_selenium_devtools_v94_4_1_0.xml │ ├── Maven__org_seleniumhq_selenium_selenium_devtools_v95_4_1_0.xml │ ├── Maven__org_seleniumhq_selenium_selenium_devtools_v96_4_1_0.xml │ ├── Maven__org_seleniumhq_selenium_selenium_edge_driver_4_1_0.xml │ ├── Maven__org_seleniumhq_selenium_selenium_firefox_driver_4_1_0.xml │ ├── Maven__org_seleniumhq_selenium_selenium_firefox_xpi_driver_4_1_0.xml │ ├── Maven__org_seleniumhq_selenium_selenium_ie_driver_4_1_0.xml │ ├── Maven__org_seleniumhq_selenium_selenium_java_4_1_0.xml │ ├── Maven__org_seleniumhq_selenium_selenium_opera_driver_4_1_0.xml │ ├── Maven__org_seleniumhq_selenium_selenium_safari_driver_4_1_0.xml │ ├── Maven__org_seleniumhq_selenium_selenium_support_4_1_0.xml │ ├── Maven__org_slf4j_slf4j_api_1_7_30.xml │ ├── Maven__org_sonatype_sisu_sisu_guice_noaop_2_1_7.xml │ ├── Maven__org_sonatype_sisu_sisu_inject_bean_1_4_2.xml │ ├── Maven__org_sonatype_sisu_sisu_inject_plexus_1_4_2.xml │ ├── Maven__oro_oro_2_0_8.xml │ ├── Maven__pl_pragmatists_JUnitParams_1_1_1.xml │ ├── Maven__sslext_sslext_1_2_0.xml │ └── Maven__xmlunit_xmlunit_1_5.xml ├── misc.xml ├── modules.xml ├── uiDesigner.xml └── vcs.xml ├── LICENSE ├── README.md ├── chapter1-upgrade-selenium4 └── chapter2-relative-locators-selenium4.iml ├── chapter10-cdp-networkemulation ├── pom.xml └── src │ └── test │ └── java │ ├── DevToolsNetworkEmulationLambdaTestTests.java │ └── DevToolsNetworkEmulationTests.java ├── chapter11-test-reporting ├── allure-report │ ├── app.js │ ├── data │ │ ├── behaviors.csv │ │ ├── behaviors.json │ │ ├── categories.csv │ │ ├── categories.json │ │ ├── packages.json │ │ ├── suites.csv │ │ ├── suites.json │ │ ├── test-cases │ │ │ ├── 1122be3ec7b168e6.json │ │ │ ├── 146b62a3fd82fc7b.json │ │ │ ├── 14a9a39ed4b33b77.json │ │ │ ├── 1b30d676de838992.json │ │ │ ├── 1ffbfa286101b920.json │ │ │ ├── 22f020ead092ed35.json │ │ │ ├── 2b31da8361c17827.json │ │ │ ├── 2bcabb3dfc312b5c.json │ │ │ ├── 336ad9c8f7f71874.json │ │ │ ├── 33d0a0003e34bb00.json │ │ │ ├── 35d0760d08216fe9.json │ │ │ ├── 37f7e0557432c522.json │ │ │ ├── 416cd564ae3736b9.json │ │ │ ├── 4d6cbb76e733c551.json │ │ │ ├── 4e7000ae1de6a32d.json │ │ │ ├── 4ee51069743263b0.json │ │ │ ├── 533687affff68280.json │ │ │ ├── 5d212d4ac0358aab.json │ │ │ ├── 646773a12e919835.json │ │ │ ├── 696c1e229cc59714.json │ │ │ ├── 6aa2cb027fb479e0.json │ │ │ ├── 71c18cc71cb234fd.json │ │ │ ├── 73f5c30a0391b5f8.json │ │ │ ├── 78cf3bf7b6c8c4ef.json │ │ │ ├── 7c900d3ba7d0369d.json │ │ │ ├── 7d7c04b12fff39ce.json │ │ │ ├── 7e6ad39ad1a9d2c4.json │ │ │ ├── 80d0014cd00d90d5.json │ │ │ ├── 89d0613eec0f3e22.json │ │ │ ├── 951b26542fcfa7e.json │ │ │ ├── 98cb7b1714303161.json │ │ │ ├── 9ed6fa946c66363f.json │ │ │ ├── 9fa25f09321c7eb0.json │ │ │ ├── a689092adee26174.json │ │ │ ├── ab58d1aa59ff890b.json │ │ │ ├── af89202da6902611.json │ │ │ ├── b3bb99a40928c9e0.json │ │ │ ├── bf1a9fe76da4ef8.json │ │ │ ├── c9be6ac9d5bc1ac9.json │ │ │ ├── cc85a7de3a29dca4.json │ │ │ ├── cf27981ba63a29da.json │ │ │ ├── d09e4e1c3e98ae09.json │ │ │ ├── d81580e840d62c43.json │ │ │ ├── de97f3e6983b87e9.json │ │ │ ├── e46d898f72b86139.json │ │ │ ├── e5c9b83e684c395b.json │ │ │ ├── ea00a4e29580ca1b.json │ │ │ └── efb26eaa041e5c54.json │ │ └── timeline.json │ ├── export │ │ ├── influxDbData.txt │ │ ├── mail.html │ │ └── prometheusData.txt │ ├── favicon.ico │ ├── history │ │ ├── categories-trend.json │ │ ├── duration-trend.json │ │ ├── history-trend.json │ │ ├── history.json │ │ └── retry-trend.json │ ├── index.html │ ├── plugins │ │ ├── behaviors │ │ │ └── index.js │ │ ├── packages │ │ │ └── index.js │ │ └── screen-diff │ │ │ ├── index.js │ │ │ └── styles.css │ ├── styles.css │ └── widgets │ │ ├── behaviors.json │ │ ├── categories-trend.json │ │ ├── categories.json │ │ ├── duration-trend.json │ │ ├── duration.json │ │ ├── environment.json │ │ ├── executors.json │ │ ├── history-trend.json │ │ ├── launch.json │ │ ├── retry-trend.json │ │ ├── severity.json │ │ ├── status-chart.json │ │ ├── suites.json │ │ └── summary.json ├── allure-results │ ├── 003a8272-15f3-455e-84fd-610a53eceb20-result.json │ ├── 047226f9-a295-417e-8fa2-a12c6793ad04-result.json │ ├── 08624109-d03f-4c95-8d97-191e378821f3-container.json │ ├── 0ed86473-bb90-4bf2-a665-d9cfe6349216-container.json │ ├── 109e29f7-2498-4e59-900f-7b47fe0217c8-container.json │ ├── 10d43317-955f-4f0a-9242-317c4a566a2e-container.json │ ├── 111facb5-4d63-4e1b-ac6b-970001111e76-container.json │ ├── 121f9f9c-8e67-4952-bff6-e3fb2fe6df23-result.json │ ├── 13f8993d-39ba-4e4f-9f71-187f72ee5d98-container.json │ ├── 253852f4-8f52-4b3f-8496-64e12dcb3b46-container.json │ ├── 26d893db-5751-499a-8e31-3b86f08102e6-result.json │ ├── 26fce5ba-23e1-42ee-a31c-3a165f8fe182-result.json │ ├── 3261acbd-886d-460d-87b5-a95e2d8be5a8-result.json │ ├── 32cdbf92-64e1-40a6-abf4-1196f8c99a3a-container.json │ ├── 33789db1-579d-4511-8aec-292abac5e6de-result.json │ ├── 33ebbd48-65e1-4029-83db-938621d49733-result.json │ ├── 349e5c08-7249-4153-b4f9-7e87c03332e3-container.json │ ├── 3a84dbe3-6048-4fd8-b956-282833e0162c-container.json │ ├── 3bfa9d23-0ede-49b0-9cd6-aab7f07ef544-container.json │ ├── 3e0b1ce3-f755-4362-830a-deb91317e8c5-container.json │ ├── 41942ae5-d925-41a6-beab-c56e3a16e1ff-result.json │ ├── 4858ddd7-3c4f-4a98-80a9-bccb6fb369d3-container.json │ ├── 4970b32b-938b-4f92-9319-079415a1de64-container.json │ ├── 532032b2-9385-41c2-9447-c9afd19519f2-result.json │ ├── 551ecc3f-25c5-4ea1-95b4-60e47dc3e721-result.json │ ├── 592cc095-bf39-4b6c-943e-50baaa7ba69d-result.json │ ├── 5bd549f5-fae9-4dcb-80c1-ef81d6488f78-result.json │ ├── 5cac53fc-0e7b-49c7-814d-7aa1681e7ec1-container.json │ ├── 5fa7f993-2c0b-4083-9a49-aa94ab35dcb6-result.json │ ├── 644ab05e-b5ac-4516-8ed4-c622602c24c3-container.json │ ├── 651d4da8-8923-4159-84cd-c894406f1bb5-container.json │ ├── 6631ae30-10d7-45a0-8021-f5eaab2294db-result.json │ ├── 66fca43f-f65a-49e0-947c-a7028f13c269-container.json │ ├── 6ec5ca7a-bd2c-4e8d-b903-fcf9d49e74fc-container.json │ ├── 6f113570-caec-4ef8-9c70-edd667c1cdb3-container.json │ ├── 703e922d-a5c0-4c30-af03-4c2c9bbe9808-container.json │ ├── 72d53f59-1fc7-4354-979c-c8ebabf14806-result.json │ ├── 732312e3-1003-4597-8870-216c769630c0-result.json │ ├── 748c3fb4-d165-4561-af40-83e456fb7c10-result.json │ ├── 823294f1-a514-495b-9157-468db0f7803f-result.json │ ├── 823bf863-7569-4ece-96d0-8c1871ccfe48-result.json │ ├── 840f357e-33b1-4572-b21e-9bd1fb0da704-container.json │ ├── 8539c05d-2035-4ca8-b16c-4a7e688fd3a7-result.json │ ├── 87de5331-a64e-4c83-8ce5-ca147a19d9e0-result.json │ ├── 8a56c078-fcb4-4d4e-93b6-663aa2750914-container.json │ ├── 8af48c79-82d0-4d36-b3b5-ac78ad4ec96d-result.json │ ├── 8b6eb467-287c-4696-bda1-1caca7372c10-container.json │ ├── 8da0d171-69a6-4abe-b6e4-e9b1774e35b0-result.json │ ├── 8e34148e-dac9-44d5-99a7-8e91ec103bcb-container.json │ ├── 9198582c-65e4-406a-8c2f-6c9bdbb09889-container.json │ ├── 960c2153-e9d8-4af4-8cb8-9f4917c8dad9-result.json │ ├── 9751dff7-76bf-4703-9e1f-714410a49aaf-container.json │ ├── 99c8cf9b-2308-41be-a188-8dc06c9aef06-result.json │ ├── 9a3f43a9-1687-48e8-b5ab-9776b5e69711-result.json │ ├── 9a77d441-f032-4720-ab5d-8ca86956c570-container.json │ ├── 9b35e8c2-8cb4-42c1-8189-494833947bc1-container.json │ ├── 9c50e56e-f039-4e1d-8311-1db644f9e78f-container.json │ ├── 9e6fdbfa-6cc4-47e3-ac5b-6b7915786b6f-container.json │ ├── 9f9c91bf-5d28-4e70-a95c-9356febb0a4d-container.json │ ├── a24684d6-2329-4d29-a71e-ac68334c5b17-container.json │ ├── a3d63925-3cd8-445c-b302-b6624c5a4edf-container.json │ ├── a765866c-a1cc-4667-86cd-3c1e79c36b26-container.json │ ├── a7c0356f-6573-448b-93bb-1be2f6700d6a-container.json │ ├── abc91aed-b2f1-4083-9b11-96a33acc0b18-container.json │ ├── adccc158-b624-4a23-93f5-f42dc5b41520-container.json │ ├── adda16e1-bd54-491e-941f-a79c625247fd-container.json │ ├── b126c314-0c16-4744-b6b3-13cf6545a016-container.json │ ├── b1b662d4-59ce-40a7-abdf-21ff30f3e762-container.json │ ├── b31e427f-a4a5-4fa9-8c63-9497bf1680be-result.json │ ├── b4a4cf53-5cd6-4b77-8c5f-a935f5090833-result.json │ ├── b6a4b067-4458-4597-ae73-83b9b0efb933-result.json │ ├── bbf1f5fd-0074-40e7-af57-f3c2fccc08d8-result.json │ ├── c0289780-127f-433d-8e16-aacce410697f-result.json │ ├── c1386ace-2f18-452c-9e10-53bcff240444-result.json │ ├── c2f9c032-4303-49bc-a54c-657c35ef89cb-result.json │ ├── ca9d0e99-acd0-4f62-802c-5dbb384758bb-result.json │ ├── cf6f7d19-76e8-4ba0-ab89-3f34c1526deb-result.json │ ├── d0585480-e624-4850-9619-1ca83f21affd-result.json │ ├── d095126e-13cc-4d2c-8f8a-243eaa672f8f-container.json │ ├── d16f875f-5538-40c3-93d1-32bd12a129ef-container.json │ ├── d78b8cb7-9ffa-428f-9c04-174515722462-container.json │ ├── d912c07c-7911-4090-a1f8-6c1d46c3464b-result.json │ ├── d98fc60e-0549-43e6-b5bd-b1fc53485e26-result.json │ ├── df43a624-e259-4ca2-92c5-2e88b68582be-result.json │ ├── e1276b51-82ff-425c-be7f-7086dfca8b10-result.json │ ├── e5001eee-38e0-4b02-adae-d3c1a58e8ba5-result.json │ ├── e6f5abe0-1d7c-49bb-861e-477bd6e0390d-result.json │ ├── e8a7abb4-a7a2-470d-be8d-e25e86a7c867-container.json │ ├── ea513901-9e2d-42bb-b58b-e4fa72eeb7b8-result.json │ ├── ea64b592-6b71-4c22-945a-8f7593c12764-result.json │ ├── ec55883b-e754-4a43-8074-3d95a33d4b23-container.json │ ├── edd2dd29-5b76-4587-a353-69a8893f3a99-container.json │ ├── eeabb5a9-b89d-439d-9fdf-f091059545e1-result.json │ ├── f0c182ae-a0eb-48eb-94c9-640e98ea0916-container.json │ ├── f5455136-999d-4377-8293-e398ed2a1ef0-container.json │ ├── f6a7066d-f463-4ad3-ae73-c7ea68652b2b-result.json │ ├── f80d8c0d-d3bc-4337-89f7-5460515e7610-container.json │ ├── f9dff448-a6eb-479e-842a-6c4122d66099-container.json │ ├── fb1be74f-e6ca-4e3f-a3e6-842d47d865fc-result.json │ └── fedb8f81-c8cc-4c82-9486-fe6729d80083-container.json ├── pom.xml ├── results.html ├── src │ ├── main │ │ └── resources │ │ │ ├── junit-platform.properties │ │ │ ├── logback.xml │ │ │ └── reportportal.properties │ └── test │ │ └── java │ │ ├── ToDoAllureTests.java │ │ ├── ToDoExtentReportTests.java │ │ └── WebTechnology.java └── target │ ├── classes │ ├── junit-platform.properties │ ├── logback.xml │ └── reportportal.properties │ └── maven-status │ └── maven-compiler-plugin │ ├── compile │ └── default-compile │ │ └── inputFiles.lst │ └── testCompile │ └── default-testCompile │ ├── createdFiles.lst │ └── inputFiles.lst ├── chapter12-signup-forms ├── pom.xml └── src │ ├── main │ └── java │ │ ├── factories │ │ └── UserFactory.java │ │ ├── models │ │ └── User.java │ │ ├── pages │ │ ├── AccountSuccessPage.java │ │ └── RegistrationPage.java │ │ └── utilities │ │ └── TimestampBuilder.java │ └── test │ └── java │ └── signup │ ├── SignupClientSideValidationTests.java │ ├── SignupLambdatestTests.java │ ├── SignupServerSideValidationsTests.java │ ├── SignupTests.java │ └── SignupUsabilityTests.java ├── chapter13-email-testing ├── pom.xml ├── src │ ├── main │ │ ├── java │ │ │ ├── factories │ │ │ │ └── UserFactory.java │ │ │ ├── infrastructure │ │ │ │ ├── MailslurpService.java │ │ │ │ └── TestmailService.java │ │ │ ├── models │ │ │ │ ├── User.java │ │ │ │ └── emails │ │ │ │ │ ├── EmailsItem.java │ │ │ │ │ ├── EmailsResponse.java │ │ │ │ │ ├── FromParsedItem.java │ │ │ │ │ └── ToParsedItem.java │ │ │ └── utilities │ │ │ │ ├── ResourcesReader.java │ │ │ │ └── TimestampBuilder.java │ │ └── resources │ │ │ └── sample-email.html │ └── test │ │ └── java │ │ └── signup │ │ ├── EmailInboxesLambdatestTests.java │ │ └── EmailInboxesTests.java └── target │ └── classes │ └── sample-email.html ├── chapter14-handling-captcha ├── pom.xml └── src │ └── test │ └── java │ └── captcha │ └── CaptchaHandlingTests.java ├── chapter15-handling-cookies ├── pom.xml └── src │ └── test │ └── java │ └── cookies │ └── HandlingCookiesTests.java ├── chapter16-handling-waits ├── pom.xml └── src │ ├── main │ └── java │ │ ├── adapterpattern │ │ ├── Browser.java │ │ ├── Driver.java │ │ ├── DriverAdapter.java │ │ ├── Element.java │ │ └── ElementAdapter.java │ │ ├── decoratorpattern │ │ ├── Browser.java │ │ ├── Driver.java │ │ ├── DriverDecorator.java │ │ ├── Element.java │ │ ├── ElementDecorator.java │ │ ├── LogElement.java │ │ ├── LoggingDriver.java │ │ ├── WebCoreDriver.java │ │ └── WebCoreElement.java │ │ └── proxypattern │ │ └── WebDriverProxy.java │ └── test │ └── java │ ├── adapterpattern │ └── ProductPurchaseTests.java │ ├── decoratorpattern │ └── ProductPurchaseTests.java │ ├── hardcodedpauses │ └── ProductPurchaseTests.java │ ├── proxypattern │ └── ProductPurchaseTests.java │ └── webdriverwait │ └── ProductPurchaseTests.java ├── chapter17-handling-exceptions ├── pom.xml └── src │ ├── main │ └── java │ │ ├── adapterpattern │ │ ├── Browser.java │ │ ├── Driver.java │ │ ├── DriverAdapter.java │ │ ├── Element.java │ │ └── ElementAdapter.java │ │ ├── decoratorpattern │ │ ├── Browser.java │ │ ├── Driver.java │ │ ├── DriverDecorator.java │ │ ├── Element.java │ │ ├── ElementDecorator.java │ │ ├── LogElement.java │ │ ├── LoggingDriver.java │ │ ├── WebCoreDriver.java │ │ └── WebCoreElement.java │ │ ├── exceptions │ │ └── AnalyzedTestException.java │ │ └── proxypattern │ │ └── WebDriverProxy.java │ └── test │ └── java │ ├── adapterpattern │ └── ProductPurchaseTests.java │ ├── decoratorpattern │ └── ProductPurchaseTests.java │ ├── hardcodedpauses │ └── ProductPurchaseTests.java │ ├── proxypattern │ └── ProductPurchaseTests.java │ └── webdriverwait │ ├── ProductPurchaseTests.java │ └── ProductPurchaseTestsLambdatest.java ├── chapter18-event-listeners ├── pom.xml └── src │ ├── main │ └── java │ │ ├── adapterpattern │ │ ├── Browser.java │ │ ├── Driver.java │ │ ├── DriverAdapter.java │ │ ├── Element.java │ │ └── ElementAdapter.java │ │ ├── decoratorpattern │ │ ├── Browser.java │ │ ├── Driver.java │ │ ├── DriverDecorator.java │ │ ├── Element.java │ │ ├── ElementDecorator.java │ │ ├── LogElement.java │ │ ├── LoggingDriver.java │ │ ├── WebCoreDriver.java │ │ └── WebCoreElement.java │ │ ├── listeners │ │ ├── EventListener.java │ │ ├── ExceptionAnalysisWebDriverListener.java │ │ ├── HighlightElementWebDriverListener.java │ │ ├── Log.java │ │ ├── LogWebDriverListener.java │ │ ├── LoggerActionEventArgs.java │ │ ├── NotificationWebDriverListener.java │ │ └── exceptions │ │ │ ├── AnalyzedTestException.java │ │ │ ├── ErrorPageExceptionHandler.java │ │ │ ├── ExceptionAnalysationHandler.java │ │ │ ├── ExceptionAnalyser.java │ │ │ ├── HtmlSourceExceptionHandler.java │ │ │ ├── LoginPageUrlExceptionHandler.java │ │ │ ├── NotFoundPageExceptionHandler.java │ │ │ └── UrlExceptionHandler.java │ │ └── proxypattern │ │ └── WebDriverProxy.java │ └── test │ └── java │ ├── adapterpattern │ └── ProductPurchaseTests.java │ ├── decoratorpattern │ └── ProductPurchaseTests.java │ ├── hardcodedpauses │ └── ProductPurchaseTests.java │ ├── listeners │ ├── InitializationScriptLambdatestTests.java │ └── InitializationScriptTests.java │ ├── proxypattern │ └── ProductPurchaseTests.java │ └── webdriverwait │ └── ProductPurchaseTests.java ├── chapter2-relativelocators-selenium4 ├── pom.xml ├── relative-locators-test.html └── src │ └── test │ └── java │ ├── RelativeLocatorsTests.java │ └── ZipInfo.java ├── chapter3-initializationscripts-selenium4 ├── pom.xml └── src │ └── test │ └── java │ ├── InitializationScriptLambdatestTests.java │ ├── InitializationScriptTests.java │ ├── WebDriverListenerExtensions.java │ └── ZipInfo.java ├── chapter4-seleniumide ├── SELENIUM_IDE_DEMO.side ├── TODO_APP.side └── TODO_APP_CLI.side ├── chapter5-geolocation-testing ├── pom.xml └── src │ └── test │ └── java │ ├── DevToolsGeoLocationTestingLambdatestTests.java │ └── DevToolsGeoLocationTests.java ├── chapter6-responsive-testing ├── pom.xml └── src │ ├── main │ └── java │ │ └── layout │ │ ├── ComparingOperators.java │ │ ├── FinishValidationBuilder.java │ │ ├── LayoutComponent.java │ │ ├── LayoutComponentValidationsBuilder.java │ │ ├── LayoutOptions.java │ │ ├── LayoutPreciseValidationBuilder.java │ │ ├── LayoutValidationEventArgs.java │ │ ├── LayoutWebElement.java │ │ ├── LayoutWebSelect.java │ │ ├── Screen.java │ │ ├── SpecialComponents.java │ │ └── Viewport.java │ └── test │ └── java │ ├── DevToolsResponsiveTestingLambdatestTests.java │ └── DevToolsResponsiveTests.java ├── chapter7-cdp-troubleshooting ├── pom.xml └── src │ └── test │ └── java │ └── troubleshooting │ ├── DevToolsTroubleshootingLambdatestTests.java │ └── DevToolsTroubleshootingTests.java ├── chapter8-cdp-capturehttptraffic ├── pom.xml └── src │ └── test │ └── java │ ├── CaptureHttpTrafficTests.java │ └── DevToolsCaptureHttpTrafficLambdatestTests.java └── chapter9-cdp-performancemetrics ├── pom.xml └── src └── test └── java ├── CapturePerformanceMetricsTests.java └── DevToolsCapturePerformanceMetricsLambdaTestTests.java /.gitignore: -------------------------------------------------------------------------------- 1 | # Compiled class file 2 | *.class 3 | 4 | # Log file 5 | *.log 6 | 7 | # BlueJ files 8 | *.ctxt 9 | 10 | # Mobile Tools for Java (J2ME) 11 | .mtj.tmp/ 12 | 13 | # Package Files # 14 | *.jar 15 | *.war 16 | *.nar 17 | *.ear 18 | *.zip 19 | *.tar.gz 20 | *.rar 21 | 22 | # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml 23 | hs_err_pid* 24 | -------------------------------------------------------------------------------- /.idea/.gitignore: -------------------------------------------------------------------------------- 1 | # Default ignored files 2 | /shelf/ 3 | /workspace.xml 4 | -------------------------------------------------------------------------------- /.idea/LambdaTest-Selenium4-Java-Tutorial.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /.idea/aws.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | 16 | 17 | -------------------------------------------------------------------------------- /.idea/checkstyle-idea.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 15 | 16 | -------------------------------------------------------------------------------- /.idea/jarRepositories.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 9 | 10 | 14 | 15 | 19 | 20 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__antlr_antlr_2_7_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__aopalliance_aopalliance_1_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__com_aventstack_extentreports_5_0_9.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__com_epam_reportportal_agent_java_junit_5_1_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__com_epam_reportportal_client_java_5_1_9.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__com_epam_reportportal_commons_model_5_0_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_annotations_2_13_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_core_2_13_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_databind_2_13_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__com_google_auto_auto_common_1_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__com_google_auto_service_auto_service_1_0_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__com_google_auto_service_auto_service_annotations_1_0_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__com_google_code_findbugs_jsr305_3_0_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__com_google_code_gson_gson_2_8_6.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__com_google_guava_failureaccess_1_0_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__com_google_guava_listenablefuture_9999_0_empty_to_avoid_conflict_with_guava.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__com_google_inject_guice_no_aop_4_2_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__com_google_j2objc_j2objc_annotations_1_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__com_nordstrom_tools_guava_agent_30_1_1a.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__com_nordstrom_tools_java_utils_2_1_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__com_nordstrom_tools_junit_foundation_15_3_5.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__com_nordstrom_tools_settings_2_3_10.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__com_squareup_okhttp3_logging_interceptor_3_14_9.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__com_squareup_okhttp3_okhttp_3_14_9.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__com_squareup_okio_okio_1_17_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__com_squareup_retrofit2_adapter_rxjava2_2_9_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__com_squareup_retrofit2_converter_jackson_2_9_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__com_squareup_retrofit2_converter_scalars_2_9_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__com_squareup_retrofit2_retrofit_2_9_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__com_sun_activation_jakarta_activation_1_2_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__com_thoughtworks_qdox_qdox_2_0_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__com_typesafe_netty_netty_reactive_streams_2_0_4.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__commons_beanutils_commons_beanutils_1_9_4.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__commons_chain_commons_chain_1_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__commons_codec_commons_codec_1_13.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__commons_collections_commons_collections_3_2_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__commons_digester_commons_digester_1_8.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__commons_io_commons_io_2_8_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__commons_lang_commons_lang_2_4.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__commons_logging_commons_logging_1_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__commons_validator_commons_validator_1_3_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__dom4j_dom4j_1_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__io_github_bonigarcia_webdrivermanager_4_3_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__io_netty_netty_codec_socks_4_1_60_Final.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__io_netty_netty_handler_proxy_4_1_60_Final.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__io_netty_netty_transport_native_epoll_linux_x86_64_4_1_60_Final.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__io_netty_netty_transport_native_kqueue_osx_x86_64_4_1_60_Final.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__io_ous_jtoml_2_0_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__io_qameta_allure_allure_maven_2_11_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__io_reactivex_rxjava2_rxjava_2_2_10.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__io_reactivex_rxjava3_rxjava_3_0_4.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__io_swagger_swagger_annotations_1_5_24.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__javax_annotation_javax_annotation_api_1_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__javax_inject_javax_inject_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__javax_validation_validation_api_2_0_1_Final.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__junit_junit_4_13_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__net_lingala_zip4j_zip4j_1_3_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_apache_commons_commons_compress_1_20.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_apache_commons_commons_configuration2_2_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_apache_commons_commons_exec_1_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_apache_commons_commons_lang3_3_11.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_apache_httpcomponents_client5_httpclient5_5_0_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_apache_httpcomponents_core5_httpcore5_5_0_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_apache_httpcomponents_core5_httpcore5_h2_5_0_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_apache_httpcomponents_httpclient_4_5_13.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_apache_httpcomponents_httpcore_4_4_13.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_apache_maven_doxia_doxia_core_1_7.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_apache_maven_doxia_doxia_decoration_model_1_7_4.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_apache_maven_doxia_doxia_logging_api_1_7.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_apache_maven_doxia_doxia_module_xhtml_1_7.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_apache_maven_doxia_doxia_sink_api_1_7.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_apache_maven_doxia_doxia_site_renderer_1_7_4.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_apache_maven_doxia_doxia_skin_model_1_7_4.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_apache_maven_maven_artifact_3_8_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_apache_maven_maven_builder_support_3_8_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_apache_maven_maven_core_3_8_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_apache_maven_maven_jxr_3_1_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_apache_maven_maven_model_3_8_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_apache_maven_maven_model_builder_3_8_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_apache_maven_maven_plugin_api_3_8_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_apache_maven_maven_repository_metadata_3_8_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_apache_maven_maven_resolver_provider_3_8_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_apache_maven_maven_settings_3_8_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_apache_maven_maven_settings_builder_3_8_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_apache_maven_plugin_tools_maven_plugin_annotations_3_6_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_apache_maven_plugins_maven_jxr_plugin_3_1_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_apache_maven_reporting_maven_reporting_api_3_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_apache_maven_reporting_maven_reporting_impl_3_0_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_apache_maven_resolver_maven_resolver_api_1_6_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_apache_maven_resolver_maven_resolver_impl_1_6_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_apache_maven_resolver_maven_resolver_spi_1_6_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_apache_maven_resolver_maven_resolver_util_1_6_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_apache_maven_shared_maven_artifact_transfer_0_13_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_apache_maven_shared_maven_common_artifact_filters_3_1_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_apache_maven_shared_maven_shared_utils_3_3_4.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_apache_maven_wagon_wagon_provider_api_2_4.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_apache_struts_struts_core_1_3_8.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_apache_struts_struts_taglib_1_3_8.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_apache_struts_struts_tiles_1_3_8.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_apache_velocity_velocity_1_7.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_apache_velocity_velocity_engine_core_2_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_apache_velocity_velocity_tools_2_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_apiguardian_apiguardian_api_1_1_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_aspectj_aspectjrt_1_9_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_aspectj_aspectjweaver_1_9_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_asynchttpclient_async_http_client_2_12_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_asynchttpclient_async_http_client_netty_utils_2_12_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_checkerframework_checker_qual_3_12_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_codehaus_plexus_plexus_cipher_2_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_codehaus_plexus_plexus_classworlds_2_6_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_codehaus_plexus_plexus_component_annotations_2_1_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_codehaus_plexus_plexus_container_default_1_0_alpha_30.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_codehaus_plexus_plexus_i18n_1_0_beta_7.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_codehaus_plexus_plexus_interpolation_1_26.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_codehaus_plexus_plexus_java_1_0_6.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_codehaus_plexus_plexus_sec_dispatcher_2_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_codehaus_plexus_plexus_utils_3_3_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_codehaus_plexus_plexus_velocity_1_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_eclipse_sisu_org_eclipse_sisu_inject_0_3_5.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_eclipse_sisu_org_eclipse_sisu_plexus_0_3_5.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_freemarker_freemarker_2_3_30.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_jsoup_jsoup_1_13_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_params_5_8_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_junit_platform_junit_platform_launcher_1_8_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_opentest4j_opentest4j_1_2_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_ow2_asm_asm_9_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_projectlombok_lombok_1_18_12.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_projectlombok_lombok_1_18_24.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_rauschig_jarchivelib_1_1_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_reactivestreams_reactive_streams_1_0_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_seleniumhq_selenium_selenium_chrome_driver_4_1_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_seleniumhq_selenium_selenium_chromium_driver_4_1_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_seleniumhq_selenium_selenium_devtools_v85_4_1_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_seleniumhq_selenium_selenium_devtools_v94_4_1_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_seleniumhq_selenium_selenium_devtools_v95_4_1_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_seleniumhq_selenium_selenium_devtools_v96_4_1_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_seleniumhq_selenium_selenium_edge_driver_4_1_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_seleniumhq_selenium_selenium_firefox_driver_4_1_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_seleniumhq_selenium_selenium_firefox_xpi_driver_4_1_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_seleniumhq_selenium_selenium_ie_driver_4_1_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_seleniumhq_selenium_selenium_java_4_1_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_seleniumhq_selenium_selenium_opera_driver_4_1_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_seleniumhq_selenium_selenium_safari_driver_4_1_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_seleniumhq_selenium_selenium_support_4_1_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_30.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_sonatype_sisu_sisu_guice_noaop_2_1_7.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_sonatype_sisu_sisu_inject_bean_1_4_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_sonatype_sisu_sisu_inject_plexus_1_4_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__oro_oro_2_0_8.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__pl_pragmatists_JUnitParams_1_1_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__sslext_sslext_1_2_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__xmlunit_xmlunit_1_5.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # LambdaTest-Selenium4-Java-Tutorial 2 | Contains Code from the LambdaTest Selenium 4 Java Tutorial 3 | -------------------------------------------------------------------------------- /chapter1-upgrade-selenium4/chapter2-relative-locators-selenium4.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | -------------------------------------------------------------------------------- /chapter11-test-reporting/allure-report/data/behaviors.csv: -------------------------------------------------------------------------------- 1 | "Epic","Feature","Story","FAILED","BROKEN","PASSED","SKIPPED","UNKNOWN" 2 | "Selenium 4 Series","Junit 5 Data-driven Tests Selenium 4","Advanced support for bdd annotations","0","0","24","0","0" 3 | -------------------------------------------------------------------------------- /chapter11-test-reporting/allure-report/data/categories.csv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AutomateThePlanet/LambdaTest-Selenium4-Java-Tutorial/d89c3a41f1e9f56aedbdbcd8b994a14e3aba8bc2/chapter11-test-reporting/allure-report/data/categories.csv -------------------------------------------------------------------------------- /chapter11-test-reporting/allure-report/data/categories.json: -------------------------------------------------------------------------------- 1 | { 2 | "uid" : "4b4757e66a1912dae1a509f688f20b0f", 3 | "name" : "categories", 4 | "children" : [ ] 5 | } -------------------------------------------------------------------------------- /chapter11-test-reporting/allure-report/export/influxDbData.txt: -------------------------------------------------------------------------------- 1 | launch_status failed=0 1653213032000000000 2 | launch_status broken=0 1653213032000000000 3 | launch_status passed=24 1653213032000000000 4 | launch_status skipped=0 1653213032000000000 5 | launch_status unknown=0 1653213032000000000 6 | launch_time duration=116364 1653213032000000000 7 | launch_time min_duration=1754 1653213032000000000 8 | launch_time max_duration=37275 1653213032000000000 9 | launch_time sum_duration=116009 1653213032000000000 10 | launch_retries retries=24 1653213032000000000 11 | launch_retries run=24 1653213032000000000 12 | -------------------------------------------------------------------------------- /chapter11-test-reporting/allure-report/export/mail.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Allure Report summary mail 6 | 7 | 8 | Mail body 9 | 10 | 11 | -------------------------------------------------------------------------------- /chapter11-test-reporting/allure-report/export/prometheusData.txt: -------------------------------------------------------------------------------- 1 | launch_status_failed 0 2 | launch_status_broken 0 3 | launch_status_passed 24 4 | launch_status_skipped 0 5 | launch_status_unknown 0 6 | launch_time_duration 116364 7 | launch_time_min_duration 1754 8 | launch_time_max_duration 37275 9 | launch_time_sum_duration 116009 10 | launch_retries_retries 24 11 | launch_retries_run 24 12 | -------------------------------------------------------------------------------- /chapter11-test-reporting/allure-report/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AutomateThePlanet/LambdaTest-Selenium4-Java-Tutorial/d89c3a41f1e9f56aedbdbcd8b994a14e3aba8bc2/chapter11-test-reporting/allure-report/favicon.ico -------------------------------------------------------------------------------- /chapter11-test-reporting/allure-report/history/categories-trend.json: -------------------------------------------------------------------------------- 1 | [ { 2 | "data" : { } 3 | } ] -------------------------------------------------------------------------------- /chapter11-test-reporting/allure-report/history/duration-trend.json: -------------------------------------------------------------------------------- 1 | [ { 2 | "data" : { 3 | "duration" : 116364 4 | } 5 | } ] -------------------------------------------------------------------------------- /chapter11-test-reporting/allure-report/history/history-trend.json: -------------------------------------------------------------------------------- 1 | [ { 2 | "data" : { 3 | "failed" : 0, 4 | "broken" : 0, 5 | "skipped" : 0, 6 | "passed" : 24, 7 | "unknown" : 0, 8 | "total" : 24 9 | } 10 | } ] -------------------------------------------------------------------------------- /chapter11-test-reporting/allure-report/history/retry-trend.json: -------------------------------------------------------------------------------- 1 | [ { 2 | "data" : { 3 | "run" : 24, 4 | "retry" : 24 5 | } 6 | } ] -------------------------------------------------------------------------------- /chapter11-test-reporting/allure-report/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Allure Report 6 | 7 | 8 | 9 | 10 | 11 |
12 |
13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /chapter11-test-reporting/allure-report/plugins/screen-diff/styles.css: -------------------------------------------------------------------------------- 1 | .screen-diff__switchers { 2 | margin-bottom: 1em; 3 | } 4 | 5 | .screen-diff__switchers label + label { 6 | margin-left: 1em; 7 | } 8 | 9 | .screen-diff__overlay { 10 | position: relative; 11 | cursor: col-resize; 12 | } 13 | 14 | .screen-diff__container { 15 | overflow-x: auto; 16 | } 17 | 18 | .screen-diff__image-over { 19 | top: 0; 20 | left: 0; 21 | bottom: 0; 22 | background: #fff; 23 | position: absolute; 24 | overflow: hidden; 25 | box-shadow: 2px 0 1px -1px #aaa; 26 | } 27 | 28 | .screen-diff-error { 29 | color: #fd5a3e; 30 | } 31 | -------------------------------------------------------------------------------- /chapter11-test-reporting/allure-report/widgets/behaviors.json: -------------------------------------------------------------------------------- 1 | { 2 | "total" : 1, 3 | "items" : [ { 4 | "uid" : "52cd1814c53e824957fdf965143928f3", 5 | "name" : "Selenium 4 Series", 6 | "statistic" : { 7 | "failed" : 0, 8 | "broken" : 0, 9 | "skipped" : 0, 10 | "passed" : 1, 11 | "unknown" : 0, 12 | "total" : 1 13 | } 14 | } ] 15 | } -------------------------------------------------------------------------------- /chapter11-test-reporting/allure-report/widgets/categories-trend.json: -------------------------------------------------------------------------------- 1 | [ { 2 | "data" : { } 3 | } ] -------------------------------------------------------------------------------- /chapter11-test-reporting/allure-report/widgets/categories.json: -------------------------------------------------------------------------------- 1 | { 2 | "total" : 0, 3 | "items" : [ ] 4 | } -------------------------------------------------------------------------------- /chapter11-test-reporting/allure-report/widgets/duration-trend.json: -------------------------------------------------------------------------------- 1 | [ { 2 | "data" : { 3 | "duration" : 116364 4 | } 5 | } ] -------------------------------------------------------------------------------- /chapter11-test-reporting/allure-report/widgets/environment.json: -------------------------------------------------------------------------------- 1 | [ ] -------------------------------------------------------------------------------- /chapter11-test-reporting/allure-report/widgets/executors.json: -------------------------------------------------------------------------------- 1 | [ ] -------------------------------------------------------------------------------- /chapter11-test-reporting/allure-report/widgets/history-trend.json: -------------------------------------------------------------------------------- 1 | [ { 2 | "data" : { 3 | "failed" : 0, 4 | "broken" : 0, 5 | "skipped" : 0, 6 | "passed" : 24, 7 | "unknown" : 0, 8 | "total" : 24 9 | } 10 | } ] -------------------------------------------------------------------------------- /chapter11-test-reporting/allure-report/widgets/launch.json: -------------------------------------------------------------------------------- 1 | [ ] -------------------------------------------------------------------------------- /chapter11-test-reporting/allure-report/widgets/retry-trend.json: -------------------------------------------------------------------------------- 1 | [ { 2 | "data" : { 3 | "run" : 24, 4 | "retry" : 24 5 | } 6 | } ] -------------------------------------------------------------------------------- /chapter11-test-reporting/allure-report/widgets/suites.json: -------------------------------------------------------------------------------- 1 | { 2 | "total" : 1, 3 | "items" : [ { 4 | "uid" : "839b282615d3d6ce13aad7c478552eb2", 5 | "name" : "ToDoExtentReportTests", 6 | "statistic" : { 7 | "failed" : 0, 8 | "broken" : 0, 9 | "skipped" : 0, 10 | "passed" : 24, 11 | "unknown" : 0, 12 | "total" : 24 13 | } 14 | } ] 15 | } -------------------------------------------------------------------------------- /chapter11-test-reporting/allure-report/widgets/summary.json: -------------------------------------------------------------------------------- 1 | { 2 | "reportName" : "Allure Report", 3 | "testRuns" : [ ], 4 | "statistic" : { 5 | "failed" : 0, 6 | "broken" : 0, 7 | "skipped" : 0, 8 | "passed" : 24, 9 | "unknown" : 0, 10 | "total" : 24 11 | }, 12 | "time" : { 13 | "start" : 1653212852549, 14 | "stop" : 1653212968913, 15 | "duration" : 116364, 16 | "minDuration" : 1754, 17 | "maxDuration" : 37275, 18 | "sumDuration" : 116009 19 | } 20 | } -------------------------------------------------------------------------------- /chapter11-test-reporting/allure-results/08624109-d03f-4c95-8d97-191e378821f3-container.json: -------------------------------------------------------------------------------- 1 | {"uuid":"08624109-d03f-4c95-8d97-191e378821f3","name":"13. verify todo list created successfully when technology = Closure","children":["960c2153-e9d8-4af4-8cb8-9f4917c8dad9"],"befores":[],"afters":[],"start":1653211779328,"stop":1653211782434} -------------------------------------------------------------------------------- /chapter11-test-reporting/allure-results/0ed86473-bb90-4bf2-a665-d9cfe6349216-container.json: -------------------------------------------------------------------------------- 1 | {"uuid":"0ed86473-bb90-4bf2-a665-d9cfe6349216","name":"14. verify todo list created successfully when technology = Vanilla JS","children":["cf6f7d19-76e8-4ba0-ab89-3f34c1526deb"],"befores":[],"afters":[],"start":1653211782438,"stop":1653211785705} -------------------------------------------------------------------------------- /chapter11-test-reporting/allure-results/109e29f7-2498-4e59-900f-7b47fe0217c8-container.json: -------------------------------------------------------------------------------- 1 | {"uuid":"109e29f7-2498-4e59-900f-7b47fe0217c8","name":"3. verify todo list created successfully when technology = React","children":["5fa7f993-2c0b-4083-9a49-aa94ab35dcb6"],"befores":[],"afters":[],"start":1653211742721,"stop":1653211747293} -------------------------------------------------------------------------------- /chapter11-test-reporting/allure-results/10d43317-955f-4f0a-9242-317c4a566a2e-container.json: -------------------------------------------------------------------------------- 1 | {"uuid":"10d43317-955f-4f0a-9242-317c4a566a2e","name":"ToDoExtentReportTests","children":["bbf1f5fd-0074-40e7-af57-f3c2fccc08d8","551ecc3f-25c5-4ea1-95b4-60e47dc3e721","d0585480-e624-4850-9619-1ca83f21affd","c2f9c032-4303-49bc-a54c-657c35ef89cb","003a8272-15f3-455e-84fd-610a53eceb20","e6f5abe0-1d7c-49bb-861e-477bd6e0390d","592cc095-bf39-4b6c-943e-50baaa7ba69d","121f9f9c-8e67-4952-bff6-e3fb2fe6df23","72d53f59-1fc7-4354-979c-c8ebabf14806","33789db1-579d-4511-8aec-292abac5e6de","9a3f43a9-1687-48e8-b5ab-9776b5e69711","047226f9-a295-417e-8fa2-a12c6793ad04","e1276b51-82ff-425c-be7f-7086dfca8b10","ea513901-9e2d-42bb-b58b-e4fa72eeb7b8","d98fc60e-0549-43e6-b5bd-b1fc53485e26","5bd549f5-fae9-4dcb-80c1-ef81d6488f78","6631ae30-10d7-45a0-8021-f5eaab2294db","33ebbd48-65e1-4029-83db-938621d49733","c0289780-127f-433d-8e16-aacce410697f","fb1be74f-e6ca-4e3f-a3e6-842d47d865fc","e5001eee-38e0-4b02-adae-d3c1a58e8ba5","eeabb5a9-b89d-439d-9fdf-f091059545e1","532032b2-9385-41c2-9447-c9afd19519f2","26d893db-5751-499a-8e31-3b86f08102e6"],"befores":[],"afters":[],"start":1653212851544,"stop":1653212969340} -------------------------------------------------------------------------------- /chapter11-test-reporting/allure-results/111facb5-4d63-4e1b-ac6b-970001111e76-container.json: -------------------------------------------------------------------------------- 1 | {"uuid":"111facb5-4d63-4e1b-ac6b-970001111e76","name":"7. verify todo list created successfully when technology = KnockoutJS","children":["592cc095-bf39-4b6c-943e-50baaa7ba69d"],"befores":[],"afters":[],"start":1653212877491,"stop":1653212881063} -------------------------------------------------------------------------------- /chapter11-test-reporting/allure-results/13f8993d-39ba-4e4f-9f71-187f72ee5d98-container.json: -------------------------------------------------------------------------------- 1 | {"uuid":"13f8993d-39ba-4e4f-9f71-187f72ee5d98","name":"11. verify todo list created successfully when technology = Dart","children":["9a3f43a9-1687-48e8-b5ab-9776b5e69711"],"befores":[],"afters":[],"start":1653212893195,"stop":1653212896628} -------------------------------------------------------------------------------- /chapter11-test-reporting/allure-results/253852f4-8f52-4b3f-8496-64e12dcb3b46-container.json: -------------------------------------------------------------------------------- 1 | {"uuid":"253852f4-8f52-4b3f-8496-64e12dcb3b46","name":"23. verify todo list created successfully when technology = null","children":["ca9d0e99-acd0-4f62-802c-5dbb384758bb"],"befores":[],"afters":[],"start":1653211845788,"stop":1653211847603} -------------------------------------------------------------------------------- /chapter11-test-reporting/allure-results/32cdbf92-64e1-40a6-abf4-1196f8c99a3a-container.json: -------------------------------------------------------------------------------- 1 | {"uuid":"32cdbf92-64e1-40a6-abf4-1196f8c99a3a","name":"14. verify todo list created successfully when technology = Vanilla JS","children":["ea513901-9e2d-42bb-b58b-e4fa72eeb7b8"],"befores":[],"afters":[],"start":1653212903214,"stop":1653212906467} -------------------------------------------------------------------------------- /chapter11-test-reporting/allure-results/349e5c08-7249-4153-b4f9-7e87c03332e3-container.json: -------------------------------------------------------------------------------- 1 | {"uuid":"349e5c08-7249-4153-b4f9-7e87c03332e3","name":"5. verify todo list created successfully when technology = CanJS","children":["3261acbd-886d-460d-87b5-a95e2d8be5a8"],"befores":[],"afters":[],"start":1653211751408,"stop":1653211754613} -------------------------------------------------------------------------------- /chapter11-test-reporting/allure-results/3a84dbe3-6048-4fd8-b956-282833e0162c-container.json: -------------------------------------------------------------------------------- 1 | {"uuid":"3a84dbe3-6048-4fd8-b956-282833e0162c","name":"19. verify todo list created successfully when technology = Mithril","children":["df43a624-e259-4ca2-92c5-2e88b68582be"],"befores":[],"afters":[],"start":1653211833007,"stop":1653211836069} -------------------------------------------------------------------------------- /chapter11-test-reporting/allure-results/3bfa9d23-0ede-49b0-9cd6-aab7f07ef544-container.json: -------------------------------------------------------------------------------- 1 | {"uuid":"3bfa9d23-0ede-49b0-9cd6-aab7f07ef544","name":"18. verify todo list created successfully when technology = Dojo","children":["33ebbd48-65e1-4029-83db-938621d49733"],"befores":[],"afters":[],"start":1653212949963,"stop":1653212953362} -------------------------------------------------------------------------------- /chapter11-test-reporting/allure-results/3e0b1ce3-f755-4362-830a-deb91317e8c5-container.json: -------------------------------------------------------------------------------- 1 | {"uuid":"3e0b1ce3-f755-4362-830a-deb91317e8c5","name":"20. verify todo list created successfully when technology = Kotlin + React","children":["99c8cf9b-2308-41be-a188-8dc06c9aef06"],"befores":[],"afters":[],"start":1653211836072,"stop":1653211839163} -------------------------------------------------------------------------------- /chapter11-test-reporting/allure-results/4858ddd7-3c4f-4a98-80a9-bccb6fb369d3-container.json: -------------------------------------------------------------------------------- 1 | {"uuid":"4858ddd7-3c4f-4a98-80a9-bccb6fb369d3","name":"10. verify todo list created successfully when technology = Angular 2.0","children":["732312e3-1003-4597-8870-216c769630c0"],"befores":[],"afters":[],"start":1653211768784,"stop":1653211772838} -------------------------------------------------------------------------------- /chapter11-test-reporting/allure-results/4970b32b-938b-4f92-9319-079415a1de64-container.json: -------------------------------------------------------------------------------- 1 | {"uuid":"4970b32b-938b-4f92-9319-079415a1de64","name":"10. verify todo list created successfully when technology = Angular 2.0","children":["33789db1-579d-4511-8aec-292abac5e6de"],"befores":[],"afters":[],"start":1653212888912,"stop":1653212893191} -------------------------------------------------------------------------------- /chapter11-test-reporting/allure-results/5cac53fc-0e7b-49c7-814d-7aa1681e7ec1-container.json: -------------------------------------------------------------------------------- 1 | {"uuid":"5cac53fc-0e7b-49c7-814d-7aa1681e7ec1","name":"9. verify todo list created successfully when technology = Polymer","children":["87de5331-a64e-4c83-8ce5-ca147a19d9e0"],"befores":[],"afters":[],"start":1653211764594,"stop":1653211768779} -------------------------------------------------------------------------------- /chapter11-test-reporting/allure-results/644ab05e-b5ac-4516-8ed4-c622602c24c3-container.json: -------------------------------------------------------------------------------- 1 | {"uuid":"644ab05e-b5ac-4516-8ed4-c622602c24c3","name":"9. verify todo list created successfully when technology = Polymer","children":["72d53f59-1fc7-4354-979c-c8ebabf14806"],"befores":[],"afters":[],"start":1653212884912,"stop":1653212888907} -------------------------------------------------------------------------------- /chapter11-test-reporting/allure-results/651d4da8-8923-4159-84cd-c894406f1bb5-container.json: -------------------------------------------------------------------------------- 1 | {"uuid":"651d4da8-8923-4159-84cd-c894406f1bb5","name":"11. verify todo list created successfully when technology = Dart","children":["b4a4cf53-5cd6-4b77-8c5f-a935f5090833"],"befores":[],"afters":[],"start":1653211772842,"stop":1653211776163} -------------------------------------------------------------------------------- /chapter11-test-reporting/allure-results/66fca43f-f65a-49e0-947c-a7028f13c269-container.json: -------------------------------------------------------------------------------- 1 | {"uuid":"66fca43f-f65a-49e0-947c-a7028f13c269","name":"22. verify todo list created successfully when technology = Vanilla ES6","children":["eeabb5a9-b89d-439d-9fdf-f091059545e1"],"befores":[],"afters":[],"start":1653212962510,"stop":1653212965366} -------------------------------------------------------------------------------- /chapter11-test-reporting/allure-results/6ec5ca7a-bd2c-4e8d-b903-fcf9d49e74fc-container.json: -------------------------------------------------------------------------------- 1 | {"uuid":"6ec5ca7a-bd2c-4e8d-b903-fcf9d49e74fc","name":"6. verify todo list created successfully when technology = Ember.js","children":["e6f5abe0-1d7c-49bb-861e-477bd6e0390d"],"befores":[],"afters":[],"start":1653212873610,"stop":1653212877486} -------------------------------------------------------------------------------- /chapter11-test-reporting/allure-results/6f113570-caec-4ef8-9c70-edd667c1cdb3-container.json: -------------------------------------------------------------------------------- 1 | {"uuid":"6f113570-caec-4ef8-9c70-edd667c1cdb3","name":"1. verify todo list created successfully when technology = Backbone.js","children":["bbf1f5fd-0074-40e7-af57-f3c2fccc08d8"],"befores":[],"afters":[],"start":1653212852493,"stop":1653212857940} -------------------------------------------------------------------------------- /chapter11-test-reporting/allure-results/703e922d-a5c0-4c30-af03-4c2c9bbe9808-container.json: -------------------------------------------------------------------------------- 1 | {"uuid":"703e922d-a5c0-4c30-af03-4c2c9bbe9808","name":"17. verify todo list created successfully when technology = Spine","children":["6631ae30-10d7-45a0-8021-f5eaab2294db"],"befores":[],"afters":[],"start":1653212947027,"stop":1653212949960} -------------------------------------------------------------------------------- /chapter11-test-reporting/allure-results/840f357e-33b1-4572-b21e-9bd1fb0da704-container.json: -------------------------------------------------------------------------------- 1 | {"uuid":"840f357e-33b1-4572-b21e-9bd1fb0da704","name":"8. verify todo list created successfully when technology = Marionette.js","children":["121f9f9c-8e67-4952-bff6-e3fb2fe6df23"],"befores":[],"afters":[],"start":1653212881068,"stop":1653212884908} -------------------------------------------------------------------------------- /chapter11-test-reporting/allure-results/8a56c078-fcb4-4d4e-93b6-663aa2750914-container.json: -------------------------------------------------------------------------------- 1 | {"uuid":"8a56c078-fcb4-4d4e-93b6-663aa2750914","name":"8. verify todo list created successfully when technology = Marionette.js","children":["b31e427f-a4a5-4fa9-8c63-9497bf1680be"],"befores":[],"afters":[],"start":1653211761103,"stop":1653211764589} -------------------------------------------------------------------------------- /chapter11-test-reporting/allure-results/8b6eb467-287c-4696-bda1-1caca7372c10-container.json: -------------------------------------------------------------------------------- 1 | {"uuid":"8b6eb467-287c-4696-bda1-1caca7372c10","name":"21. verify todo list created successfully when technology = Firebase + AngularJS","children":["e5001eee-38e0-4b02-adae-d3c1a58e8ba5"],"befores":[],"afters":[],"start":1653212959064,"stop":1653212962507} -------------------------------------------------------------------------------- /chapter11-test-reporting/allure-results/8e34148e-dac9-44d5-99a7-8e91ec103bcb-container.json: -------------------------------------------------------------------------------- 1 | {"uuid":"8e34148e-dac9-44d5-99a7-8e91ec103bcb","name":"2. verify todo list created successfully when technology = AngularJS","children":["8af48c79-82d0-4d36-b3b5-ac78ad4ec96d"],"befores":[],"afters":[],"start":1653211739040,"stop":1653211742717} -------------------------------------------------------------------------------- /chapter11-test-reporting/allure-results/9198582c-65e4-406a-8c2f-6c9bdbb09889-container.json: -------------------------------------------------------------------------------- 1 | {"uuid":"9198582c-65e4-406a-8c2f-6c9bdbb09889","name":"23. verify todo list created successfully when technology = null","children":["532032b2-9385-41c2-9447-c9afd19519f2"],"befores":[],"afters":[],"start":1653212965370,"stop":1653212967155} -------------------------------------------------------------------------------- /chapter11-test-reporting/allure-results/9751dff7-76bf-4703-9e1f-714410a49aaf-container.json: -------------------------------------------------------------------------------- 1 | {"uuid":"9751dff7-76bf-4703-9e1f-714410a49aaf","name":"3. verify todo list created successfully when technology = React","children":["d0585480-e624-4850-9619-1ca83f21affd"],"befores":[],"afters":[],"start":1653212862078,"stop":1653212866380} -------------------------------------------------------------------------------- /chapter11-test-reporting/allure-results/9a77d441-f032-4720-ab5d-8ca86956c570-container.json: -------------------------------------------------------------------------------- 1 | {"uuid":"9a77d441-f032-4720-ab5d-8ca86956c570","name":"18. verify todo list created successfully when technology = Dojo","children":["ea64b592-6b71-4c22-945a-8f7593c12764"],"befores":[],"afters":[],"start":1653211829483,"stop":1653211833004} -------------------------------------------------------------------------------- /chapter11-test-reporting/allure-results/9b35e8c2-8cb4-42c1-8189-494833947bc1-container.json: -------------------------------------------------------------------------------- 1 | {"uuid":"9b35e8c2-8cb4-42c1-8189-494833947bc1","name":"20. verify todo list created successfully when technology = Kotlin + React","children":["fb1be74f-e6ca-4e3f-a3e6-842d47d865fc"],"befores":[],"afters":[],"start":1653212956215,"stop":1653212959061} -------------------------------------------------------------------------------- /chapter11-test-reporting/allure-results/9c50e56e-f039-4e1d-8311-1db644f9e78f-container.json: -------------------------------------------------------------------------------- 1 | {"uuid":"9c50e56e-f039-4e1d-8311-1db644f9e78f","name":"12. verify todo list created successfully when technology = Elm","children":["b6a4b067-4458-4597-ae73-83b9b0efb933"],"befores":[],"afters":[],"start":1653211776166,"stop":1653211779324} -------------------------------------------------------------------------------- /chapter11-test-reporting/allure-results/9e6fdbfa-6cc4-47e3-ac5b-6b7915786b6f-container.json: -------------------------------------------------------------------------------- 1 | {"uuid":"9e6fdbfa-6cc4-47e3-ac5b-6b7915786b6f","name":"6. verify todo list created successfully when technology = Ember.js","children":["8da0d171-69a6-4abe-b6e4-e9b1774e35b0"],"befores":[],"afters":[],"start":1653211754617,"stop":1653211757844} -------------------------------------------------------------------------------- /chapter11-test-reporting/allure-results/9f9c91bf-5d28-4e70-a95c-9356febb0a4d-container.json: -------------------------------------------------------------------------------- 1 | {"uuid":"9f9c91bf-5d28-4e70-a95c-9356febb0a4d","name":"1. verify todo list created successfully when technology = Backbone.js","children":["c1386ace-2f18-452c-9e10-53bcff240444"],"befores":[],"afters":[],"start":1653211733048,"stop":1653211739031} -------------------------------------------------------------------------------- /chapter11-test-reporting/allure-results/a24684d6-2329-4d29-a71e-ac68334c5b17-container.json: -------------------------------------------------------------------------------- 1 | {"uuid":"a24684d6-2329-4d29-a71e-ac68334c5b17","name":"12. verify todo list created successfully when technology = Elm","children":["047226f9-a295-417e-8fa2-a12c6793ad04"],"befores":[],"afters":[],"start":1653212896632,"stop":1653212900041} -------------------------------------------------------------------------------- /chapter11-test-reporting/allure-results/a3d63925-3cd8-445c-b302-b6624c5a4edf-container.json: -------------------------------------------------------------------------------- 1 | {"uuid":"a3d63925-3cd8-445c-b302-b6624c5a4edf","name":"24. verify todo list created successfully when technology = ","children":["8539c05d-2035-4ca8-b16c-4a7e688fd3a7"],"befores":[],"afters":[],"start":1653211847606,"stop":1653211849472} -------------------------------------------------------------------------------- /chapter11-test-reporting/allure-results/a765866c-a1cc-4667-86cd-3c1e79c36b26-container.json: -------------------------------------------------------------------------------- 1 | {"uuid":"a765866c-a1cc-4667-86cd-3c1e79c36b26","name":"16. verify todo list created successfully when technology = cujoJS","children":["823294f1-a514-495b-9157-468db0f7803f"],"befores":[],"afters":[],"start":1653211789435,"stop":1653211826532} -------------------------------------------------------------------------------- /chapter11-test-reporting/allure-results/a7c0356f-6573-448b-93bb-1be2f6700d6a-container.json: -------------------------------------------------------------------------------- 1 | {"uuid":"a7c0356f-6573-448b-93bb-1be2f6700d6a","name":"verifyToDoListCreatedSuccessfully_withParams(String)","children":["c1386ace-2f18-452c-9e10-53bcff240444","8af48c79-82d0-4d36-b3b5-ac78ad4ec96d","5fa7f993-2c0b-4083-9a49-aa94ab35dcb6","748c3fb4-d165-4561-af40-83e456fb7c10","3261acbd-886d-460d-87b5-a95e2d8be5a8","8da0d171-69a6-4abe-b6e4-e9b1774e35b0","f6a7066d-f463-4ad3-ae73-c7ea68652b2b","b31e427f-a4a5-4fa9-8c63-9497bf1680be","87de5331-a64e-4c83-8ce5-ca147a19d9e0","732312e3-1003-4597-8870-216c769630c0","b4a4cf53-5cd6-4b77-8c5f-a935f5090833","b6a4b067-4458-4597-ae73-83b9b0efb933","960c2153-e9d8-4af4-8cb8-9f4917c8dad9","cf6f7d19-76e8-4ba0-ab89-3f34c1526deb","41942ae5-d925-41a6-beab-c56e3a16e1ff","823294f1-a514-495b-9157-468db0f7803f","26fce5ba-23e1-42ee-a31c-3a165f8fe182","ea64b592-6b71-4c22-945a-8f7593c12764","df43a624-e259-4ca2-92c5-2e88b68582be","99c8cf9b-2308-41be-a188-8dc06c9aef06","d912c07c-7911-4090-a1f8-6c1d46c3464b","823bf863-7569-4ece-96d0-8c1871ccfe48","ca9d0e99-acd0-4f62-802c-5dbb384758bb","8539c05d-2035-4ca8-b16c-4a7e688fd3a7"],"befores":[],"afters":[],"start":1653211733027,"stop":1653211849475} -------------------------------------------------------------------------------- /chapter11-test-reporting/allure-results/abc91aed-b2f1-4083-9b11-96a33acc0b18-container.json: -------------------------------------------------------------------------------- 1 | {"uuid":"abc91aed-b2f1-4083-9b11-96a33acc0b18","name":"4. verify todo list created successfully when technology = Vue.js","children":["748c3fb4-d165-4561-af40-83e456fb7c10"],"befores":[],"afters":[],"start":1653211747299,"stop":1653211751404} -------------------------------------------------------------------------------- /chapter11-test-reporting/allure-results/adccc158-b624-4a23-93f5-f42dc5b41520-container.json: -------------------------------------------------------------------------------- 1 | {"uuid":"adccc158-b624-4a23-93f5-f42dc5b41520","name":"15. verify todo list created successfully when technology = jQuery","children":["d98fc60e-0549-43e6-b5bd-b1fc53485e26"],"befores":[],"afters":[],"start":1653212906472,"stop":1653212909737} -------------------------------------------------------------------------------- /chapter11-test-reporting/allure-results/adda16e1-bd54-491e-941f-a79c625247fd-container.json: -------------------------------------------------------------------------------- 1 | {"uuid":"adda16e1-bd54-491e-941f-a79c625247fd","name":"15. verify todo list created successfully when technology = jQuery","children":["41942ae5-d925-41a6-beab-c56e3a16e1ff"],"befores":[],"afters":[],"start":1653211785709,"stop":1653211789431} -------------------------------------------------------------------------------- /chapter11-test-reporting/allure-results/b126c314-0c16-4744-b6b3-13cf6545a016-container.json: -------------------------------------------------------------------------------- 1 | {"uuid":"b126c314-0c16-4744-b6b3-13cf6545a016","name":"22. verify todo list created successfully when technology = Vanilla ES6","children":["823bf863-7569-4ece-96d0-8c1871ccfe48"],"befores":[],"afters":[],"start":1653211842766,"stop":1653211845785} -------------------------------------------------------------------------------- /chapter11-test-reporting/allure-results/b1b662d4-59ce-40a7-abdf-21ff30f3e762-container.json: -------------------------------------------------------------------------------- 1 | {"uuid":"b1b662d4-59ce-40a7-abdf-21ff30f3e762","name":"ToDoExtentReportTests","children":["c1386ace-2f18-452c-9e10-53bcff240444","8af48c79-82d0-4d36-b3b5-ac78ad4ec96d","5fa7f993-2c0b-4083-9a49-aa94ab35dcb6","748c3fb4-d165-4561-af40-83e456fb7c10","3261acbd-886d-460d-87b5-a95e2d8be5a8","8da0d171-69a6-4abe-b6e4-e9b1774e35b0","f6a7066d-f463-4ad3-ae73-c7ea68652b2b","b31e427f-a4a5-4fa9-8c63-9497bf1680be","87de5331-a64e-4c83-8ce5-ca147a19d9e0","732312e3-1003-4597-8870-216c769630c0","b4a4cf53-5cd6-4b77-8c5f-a935f5090833","b6a4b067-4458-4597-ae73-83b9b0efb933","960c2153-e9d8-4af4-8cb8-9f4917c8dad9","cf6f7d19-76e8-4ba0-ab89-3f34c1526deb","41942ae5-d925-41a6-beab-c56e3a16e1ff","823294f1-a514-495b-9157-468db0f7803f","26fce5ba-23e1-42ee-a31c-3a165f8fe182","ea64b592-6b71-4c22-945a-8f7593c12764","df43a624-e259-4ca2-92c5-2e88b68582be","99c8cf9b-2308-41be-a188-8dc06c9aef06","d912c07c-7911-4090-a1f8-6c1d46c3464b","823bf863-7569-4ece-96d0-8c1871ccfe48","ca9d0e99-acd0-4f62-802c-5dbb384758bb","8539c05d-2035-4ca8-b16c-4a7e688fd3a7"],"befores":[],"afters":[],"start":1653211731614,"stop":1653211849854} -------------------------------------------------------------------------------- /chapter11-test-reporting/allure-results/d095126e-13cc-4d2c-8f8a-243eaa672f8f-container.json: -------------------------------------------------------------------------------- 1 | {"uuid":"d095126e-13cc-4d2c-8f8a-243eaa672f8f","name":"24. verify todo list created successfully when technology = ","children":["26d893db-5751-499a-8e31-3b86f08102e6"],"befores":[],"afters":[],"start":1653212967158,"stop":1653212968916} -------------------------------------------------------------------------------- /chapter11-test-reporting/allure-results/d16f875f-5538-40c3-93d1-32bd12a129ef-container.json: -------------------------------------------------------------------------------- 1 | {"uuid":"d16f875f-5538-40c3-93d1-32bd12a129ef","name":"17. verify todo list created successfully when technology = Spine","children":["26fce5ba-23e1-42ee-a31c-3a165f8fe182"],"befores":[],"afters":[],"start":1653211826535,"stop":1653211829480} -------------------------------------------------------------------------------- /chapter11-test-reporting/allure-results/d78b8cb7-9ffa-428f-9c04-174515722462-container.json: -------------------------------------------------------------------------------- 1 | {"uuid":"d78b8cb7-9ffa-428f-9c04-174515722462","name":"5. verify todo list created successfully when technology = CanJS","children":["003a8272-15f3-455e-84fd-610a53eceb20"],"befores":[],"afters":[],"start":1653212869941,"stop":1653212873605} -------------------------------------------------------------------------------- /chapter11-test-reporting/allure-results/e8a7abb4-a7a2-470d-be8d-e25e86a7c867-container.json: -------------------------------------------------------------------------------- 1 | {"uuid":"e8a7abb4-a7a2-470d-be8d-e25e86a7c867","name":"2. verify todo list created successfully when technology = AngularJS","children":["551ecc3f-25c5-4ea1-95b4-60e47dc3e721"],"befores":[],"afters":[],"start":1653212857966,"stop":1653212862074} -------------------------------------------------------------------------------- /chapter11-test-reporting/allure-results/ec55883b-e754-4a43-8074-3d95a33d4b23-container.json: -------------------------------------------------------------------------------- 1 | {"uuid":"ec55883b-e754-4a43-8074-3d95a33d4b23","name":"16. verify todo list created successfully when technology = cujoJS","children":["5bd549f5-fae9-4dcb-80c1-ef81d6488f78"],"befores":[],"afters":[],"start":1653212909743,"stop":1653212947024} -------------------------------------------------------------------------------- /chapter11-test-reporting/allure-results/edd2dd29-5b76-4587-a353-69a8893f3a99-container.json: -------------------------------------------------------------------------------- 1 | {"uuid":"edd2dd29-5b76-4587-a353-69a8893f3a99","name":"19. verify todo list created successfully when technology = Mithril","children":["c0289780-127f-433d-8e16-aacce410697f"],"befores":[],"afters":[],"start":1653212953365,"stop":1653212956212} -------------------------------------------------------------------------------- /chapter11-test-reporting/allure-results/f0c182ae-a0eb-48eb-94c9-640e98ea0916-container.json: -------------------------------------------------------------------------------- 1 | {"uuid":"f0c182ae-a0eb-48eb-94c9-640e98ea0916","name":"verifyToDoListCreatedSuccessfully_withParams(String)","children":["bbf1f5fd-0074-40e7-af57-f3c2fccc08d8","551ecc3f-25c5-4ea1-95b4-60e47dc3e721","d0585480-e624-4850-9619-1ca83f21affd","c2f9c032-4303-49bc-a54c-657c35ef89cb","003a8272-15f3-455e-84fd-610a53eceb20","e6f5abe0-1d7c-49bb-861e-477bd6e0390d","592cc095-bf39-4b6c-943e-50baaa7ba69d","121f9f9c-8e67-4952-bff6-e3fb2fe6df23","72d53f59-1fc7-4354-979c-c8ebabf14806","33789db1-579d-4511-8aec-292abac5e6de","9a3f43a9-1687-48e8-b5ab-9776b5e69711","047226f9-a295-417e-8fa2-a12c6793ad04","e1276b51-82ff-425c-be7f-7086dfca8b10","ea513901-9e2d-42bb-b58b-e4fa72eeb7b8","d98fc60e-0549-43e6-b5bd-b1fc53485e26","5bd549f5-fae9-4dcb-80c1-ef81d6488f78","6631ae30-10d7-45a0-8021-f5eaab2294db","33ebbd48-65e1-4029-83db-938621d49733","c0289780-127f-433d-8e16-aacce410697f","fb1be74f-e6ca-4e3f-a3e6-842d47d865fc","e5001eee-38e0-4b02-adae-d3c1a58e8ba5","eeabb5a9-b89d-439d-9fdf-f091059545e1","532032b2-9385-41c2-9447-c9afd19519f2","26d893db-5751-499a-8e31-3b86f08102e6"],"befores":[],"afters":[],"start":1653212852465,"stop":1653212968919} -------------------------------------------------------------------------------- /chapter11-test-reporting/allure-results/f5455136-999d-4377-8293-e398ed2a1ef0-container.json: -------------------------------------------------------------------------------- 1 | {"uuid":"f5455136-999d-4377-8293-e398ed2a1ef0","name":"21. verify todo list created successfully when technology = Firebase + AngularJS","children":["d912c07c-7911-4090-a1f8-6c1d46c3464b"],"befores":[],"afters":[],"start":1653211839165,"stop":1653211842763} -------------------------------------------------------------------------------- /chapter11-test-reporting/allure-results/f80d8c0d-d3bc-4337-89f7-5460515e7610-container.json: -------------------------------------------------------------------------------- 1 | {"uuid":"f80d8c0d-d3bc-4337-89f7-5460515e7610","name":"7. verify todo list created successfully when technology = KnockoutJS","children":["f6a7066d-f463-4ad3-ae73-c7ea68652b2b"],"befores":[],"afters":[],"start":1653211757847,"stop":1653211761099} -------------------------------------------------------------------------------- /chapter11-test-reporting/allure-results/f9dff448-a6eb-479e-842a-6c4122d66099-container.json: -------------------------------------------------------------------------------- 1 | {"uuid":"f9dff448-a6eb-479e-842a-6c4122d66099","name":"13. verify todo list created successfully when technology = Closure","children":["e1276b51-82ff-425c-be7f-7086dfca8b10"],"befores":[],"afters":[],"start":1653212900045,"stop":1653212903210} -------------------------------------------------------------------------------- /chapter11-test-reporting/allure-results/fedb8f81-c8cc-4c82-9486-fe6729d80083-container.json: -------------------------------------------------------------------------------- 1 | {"uuid":"fedb8f81-c8cc-4c82-9486-fe6729d80083","name":"4. verify todo list created successfully when technology = Vue.js","children":["c2f9c032-4303-49bc-a54c-657c35ef89cb"],"befores":[],"afters":[],"start":1653212866385,"stop":1653212869935} -------------------------------------------------------------------------------- /chapter11-test-reporting/src/main/resources/junit-platform.properties: -------------------------------------------------------------------------------- 1 | junit.jupiter.testinstance.lifecycle.default = per_class 2 | junit.jupiter.execution.timeout.mode=enabled 3 | junit.jupiter.execution.timeout.default=60 s 4 | junit.jupiter.testclass.order.default = org.junit.jupiter.api.ClassOrderer$OrderAnnotation 5 | 6 | allure.link.mylink.pattern=https://example.org/mylink/{} 7 | allure.link.issue.pattern=https://example.org/issue/{} 8 | allure.link.tms.pattern=https://example.org/tms/{} -------------------------------------------------------------------------------- /chapter11-test-reporting/src/main/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | %d{HH:mm:ss.SSS} %-5level %logger{5} - %thread - %msg%n 9 | 10 | 11 | 12 | 13 | 14 | 15 | [%t] - %msg%n 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /chapter11-test-reporting/src/main/resources/reportportal.properties: -------------------------------------------------------------------------------- 1 | rp.endpoint = http://localhost:8080 2 | rp.uuid = 8ca3be4c-4f0f-4c35-8f50-34ef1d07e333 3 | rp.launch = default_JUNIT_AGENT 4 | rp.project = lambda-test-reports-examples -------------------------------------------------------------------------------- /chapter11-test-reporting/src/test/java/WebTechnology.java: -------------------------------------------------------------------------------- 1 | public enum WebTechnology { 2 | BACKBONEJS("Backbone.js"), 3 | ANGULARJS("AngularJS"), 4 | REACT("React"), 5 | VUEJS("Vue.js"), 6 | CANJS("CanJS"), 7 | EMBERJS("Ember.js"), 8 | KNOCKOUTJS("KnockoutJS"), 9 | MARIONETTEJS("Marionette.js"), 10 | POLYMER("Polymer"), 11 | ANGULAR2("Angular 2.0"), 12 | DART("Dart"), 13 | ELM("Elm"), 14 | CLOSURE("Closure"), 15 | VANILLAJS("Vanilla JS"), 16 | JQUERY("jQuery"), 17 | CUJOJS("cujoJS"), 18 | SPINE("Spine"), 19 | DOJO("Dojo"), 20 | MITHRIL("Mithril"), 21 | KOTLIN_REACT("Kotlin + React"), 22 | FIREBASE_ANGULARJS("Firebase + AngularJS"), 23 | VANILLA_ES6("Vanilla ES6"); 24 | 25 | private String technologyName; 26 | 27 | 28 | WebTechnology(String technologyName) { 29 | this.technologyName = technologyName; 30 | } 31 | 32 | public String getTechnologyName() { 33 | return technologyName; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /chapter11-test-reporting/target/classes/junit-platform.properties: -------------------------------------------------------------------------------- 1 | junit.jupiter.testinstance.lifecycle.default = per_class 2 | junit.jupiter.execution.timeout.mode=enabled 3 | junit.jupiter.execution.timeout.default=60 s 4 | junit.jupiter.testclass.order.default = org.junit.jupiter.api.ClassOrderer$OrderAnnotation 5 | 6 | allure.link.mylink.pattern=https://example.org/mylink/{} 7 | allure.link.issue.pattern=https://example.org/issue/{} 8 | allure.link.tms.pattern=https://example.org/tms/{} -------------------------------------------------------------------------------- /chapter11-test-reporting/target/classes/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | %d{HH:mm:ss.SSS} %-5level %logger{5} - %thread - %msg%n 9 | 10 | 11 | 12 | 13 | 14 | 15 | [%t] - %msg%n 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /chapter11-test-reporting/target/classes/reportportal.properties: -------------------------------------------------------------------------------- 1 | rp.endpoint = http://localhost:8080 2 | rp.uuid = 8ca3be4c-4f0f-4c35-8f50-34ef1d07e333 3 | rp.launch = default_JUNIT_AGENT 4 | rp.project = lambda-test-reports-examples -------------------------------------------------------------------------------- /chapter11-test-reporting/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AutomateThePlanet/LambdaTest-Selenium4-Java-Tutorial/d89c3a41f1e9f56aedbdbcd8b994a14e3aba8bc2/chapter11-test-reporting/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst -------------------------------------------------------------------------------- /chapter11-test-reporting/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AutomateThePlanet/LambdaTest-Selenium4-Java-Tutorial/d89c3a41f1e9f56aedbdbcd8b994a14e3aba8bc2/chapter11-test-reporting/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst -------------------------------------------------------------------------------- /chapter11-test-reporting/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst: -------------------------------------------------------------------------------- 1 | C:\SourceCode\LambdaTest-Selenium4-Java-Tutorial\chapter11-test-reporting\src\test\java\WebTechnology.java 2 | C:\SourceCode\LambdaTest-Selenium4-Java-Tutorial\chapter11-test-reporting\src\test\java\ToDoAllureTests.java 3 | C:\SourceCode\LambdaTest-Selenium4-Java-Tutorial\chapter11-test-reporting\src\test\java\ToDoExtentReportTests.java 4 | -------------------------------------------------------------------------------- /chapter12-signup-forms/src/main/java/factories/UserFactory.java: -------------------------------------------------------------------------------- 1 | package factories; 2 | 3 | import com.github.javafaker.Faker; 4 | import models.User; 5 | import utilities.TimestampBuilder; 6 | 7 | public class UserFactory { 8 | private static final String DEFAULT_PASSWORD = "thesecret"; 9 | private static final Faker faker; 10 | 11 | static { 12 | faker = new Faker(); 13 | } 14 | 15 | public static User createDefault() { 16 | var user = new User(); 17 | user.setEmail(TimestampBuilder.buildUniqueTextByPrefix(faker.internet().safeEmailAddress())); 18 | user.setFirstName(faker.name().firstName()); 19 | user.setLastName(faker.name().lastName()); 20 | user.setTelephone(faker.phoneNumber().phoneNumber()); 21 | user.setPassword(DEFAULT_PASSWORD); 22 | user.setPasswordConfirm(DEFAULT_PASSWORD); 23 | user.setAgreePrivacyPolicy(true); 24 | user.setShouldSubscribe(false); 25 | return user; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /chapter12-signup-forms/src/main/java/pages/AccountSuccessPage.java: -------------------------------------------------------------------------------- 1 | package pages; 2 | 3 | import org.junit.jupiter.api.Assertions; 4 | import org.openqa.selenium.By; 5 | import org.openqa.selenium.WebDriver; 6 | import org.openqa.selenium.WebElement; 7 | 8 | public class AccountSuccessPage { 9 | private final WebDriver driver; 10 | 11 | public AccountSuccessPage(WebDriver driver) { 12 | this.driver = driver; 13 | } 14 | 15 | private WebElement mainHeading() { 16 | return driver.findElement(By.tagName("h1")); 17 | } 18 | 19 | public void assertAccountCreatedSuccessfully() { 20 | Assertions.assertEquals("Your Account Has Been Created!", mainHeading().getText().trim()); 21 | } 22 | } -------------------------------------------------------------------------------- /chapter12-signup-forms/src/main/java/utilities/TimestampBuilder.java: -------------------------------------------------------------------------------- 1 | package utilities; 2 | 3 | import java.text.SimpleDateFormat; 4 | import java.util.Date; 5 | 6 | public class TimestampBuilder { 7 | public static synchronized String getGuid() { 8 | return java.util.UUID.randomUUID().toString(); 9 | } 10 | 11 | public static synchronized String buildUniqueTextByPrefix(String prefix) { 12 | return buildUniqueText(prefix, "", ""); 13 | } 14 | 15 | public static synchronized String buildUniqueTextByPrefix(String prefix, String separator) { 16 | return buildUniqueText(prefix, "", separator); 17 | } 18 | 19 | public static synchronized String buildUniqueTextBySuffix(String suffix) { 20 | return buildUniqueText("", suffix, ""); 21 | } 22 | 23 | public static synchronized String buildUniqueTextBySuffix(String suffix, String separator) { 24 | return buildUniqueText("", suffix, separator); 25 | } 26 | 27 | public static synchronized String buildUniqueText(String prefix, String suffix, String separator) { 28 | Date dNow = new Date(); 29 | SimpleDateFormat ft = new SimpleDateFormat("yyyyMMddHHmmssSS"); 30 | String datetime = ft.format(dNow); 31 | try { 32 | Thread.sleep(1); 33 | } catch (Exception e) { 34 | e.printStackTrace(); 35 | } 36 | 37 | return prefix + separator + datetime + separator + suffix; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /chapter13-email-testing/src/main/java/factories/UserFactory.java: -------------------------------------------------------------------------------- 1 | package factories; 2 | 3 | import com.github.javafaker.Faker; 4 | import models.User; 5 | import utilities.TimestampBuilder; 6 | 7 | public class UserFactory { 8 | private static final String DEFAULT_PASSWORD = "thesecret"; 9 | private static final Faker faker; 10 | 11 | static { 12 | faker = new Faker(); 13 | } 14 | 15 | public static User createDefault() { 16 | var user = new User(); 17 | user.setEmail(TimestampBuilder.buildUniqueTextBySuffix("test@mailsurp.com")); 18 | user.setFirstName(faker.name().firstName()); 19 | user.setLastName(faker.name().lastName()); 20 | user.setUserName(faker.name().username()); 21 | user.setTelephone(faker.phoneNumber().phoneNumber()); 22 | user.setPassword(DEFAULT_PASSWORD); 23 | user.setPasswordConfirm(DEFAULT_PASSWORD); 24 | user.setAgreedPrivacyPolicy(true); 25 | user.setShouldSubscribe(false); 26 | return user; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /chapter13-email-testing/src/main/java/models/emails/EmailsResponse.java: -------------------------------------------------------------------------------- 1 | package models.emails; 2 | 3 | import java.util.List; 4 | import com.google.gson.annotations.SerializedName; 5 | 6 | public class EmailsResponse{ 7 | 8 | @SerializedName("result") 9 | private String result; 10 | 11 | @SerializedName("emails") 12 | private List emails; 13 | 14 | @SerializedName("offset") 15 | private int offset; 16 | 17 | @SerializedName("count") 18 | private int count; 19 | 20 | @SerializedName("limit") 21 | private int limit; 22 | 23 | @SerializedName("message") 24 | private Object message; 25 | 26 | public String getResult(){ 27 | return result; 28 | } 29 | 30 | public List getEmails(){ 31 | return emails; 32 | } 33 | 34 | public int getOffset(){ 35 | return offset; 36 | } 37 | 38 | public int getCount(){ 39 | return count; 40 | } 41 | 42 | public int getLimit(){ 43 | return limit; 44 | } 45 | 46 | public Object getMessage(){ 47 | return message; 48 | } 49 | } -------------------------------------------------------------------------------- /chapter13-email-testing/src/main/java/models/emails/FromParsedItem.java: -------------------------------------------------------------------------------- 1 | package models.emails; 2 | 3 | import com.google.gson.annotations.SerializedName; 4 | 5 | public class FromParsedItem{ 6 | 7 | @SerializedName("address") 8 | private String address; 9 | 10 | @SerializedName("name") 11 | private String name; 12 | 13 | public String getAddress(){ 14 | return address; 15 | } 16 | 17 | public String getName(){ 18 | return name; 19 | } 20 | } -------------------------------------------------------------------------------- /chapter13-email-testing/src/main/java/models/emails/ToParsedItem.java: -------------------------------------------------------------------------------- 1 | package models.emails; 2 | 3 | import com.google.gson.annotations.SerializedName; 4 | 5 | public class ToParsedItem{ 6 | 7 | @SerializedName("address") 8 | private String address; 9 | 10 | @SerializedName("name") 11 | private String name; 12 | 13 | public String getAddress(){ 14 | return address; 15 | } 16 | 17 | public String getName(){ 18 | return name; 19 | } 20 | } -------------------------------------------------------------------------------- /chapter13-email-testing/src/main/java/utilities/ResourcesReader.java: -------------------------------------------------------------------------------- 1 | package utilities; 2 | 3 | import lombok.SneakyThrows; 4 | import lombok.experimental.UtilityClass; 5 | import org.apache.commons.io.IOUtils; 6 | 7 | import java.io.InputStream; 8 | import java.nio.charset.StandardCharsets; 9 | 10 | @UtilityClass 11 | public class ResourcesReader { 12 | @SneakyThrows 13 | public static String getFileAsString(Class moduleClass, String fileName) { 14 | InputStream input = moduleClass.getResourceAsStream("/" + fileName); 15 | if (input == null) { 16 | input = InputStream.nullInputStream(); 17 | } 18 | return IOUtils.toString(input, StandardCharsets.UTF_8); 19 | } 20 | } -------------------------------------------------------------------------------- /chapter13-email-testing/src/main/java/utilities/TimestampBuilder.java: -------------------------------------------------------------------------------- 1 | package utilities; 2 | 3 | import java.text.SimpleDateFormat; 4 | import java.util.Date; 5 | 6 | public class TimestampBuilder { 7 | public static synchronized String getGuid() { 8 | return java.util.UUID.randomUUID().toString(); 9 | } 10 | 11 | public static synchronized String buildUniqueTextByPrefix(String prefix) { 12 | return buildUniqueText(prefix, "", ""); 13 | } 14 | 15 | public static synchronized String buildUniqueTextByPrefix(String prefix, String separator) { 16 | return buildUniqueText(prefix, "", separator); 17 | } 18 | 19 | public static synchronized String buildUniqueTextBySuffix(String suffix) { 20 | return buildUniqueText("", suffix, ""); 21 | } 22 | 23 | public static synchronized String buildUniqueTextBySuffix(String suffix, String separator) { 24 | return buildUniqueText("", suffix, separator); 25 | } 26 | 27 | public static synchronized String buildUniqueText(String prefix, String suffix, String separator) { 28 | Date dNow = new Date(); 29 | SimpleDateFormat ft = new SimpleDateFormat("yyyyMMddHHmmssSS"); 30 | String datetime = ft.format(dNow); 31 | try { 32 | Thread.sleep(1); 33 | } catch (Exception e) { 34 | e.printStackTrace(); 35 | } 36 | 37 | return prefix + separator + datetime + separator + suffix; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /chapter16-handling-waits/src/main/java/adapterpattern/Browser.java: -------------------------------------------------------------------------------- 1 | package adapterpattern; 2 | 3 | public enum Browser { 4 | CHROME, 5 | FIREFOX, 6 | EDGE, 7 | OPERA, 8 | SAFARI, 9 | INTERNET_EXPLORER 10 | } 11 | -------------------------------------------------------------------------------- /chapter16-handling-waits/src/main/java/adapterpattern/Driver.java: -------------------------------------------------------------------------------- 1 | package adapterpattern; 2 | 3 | import org.openqa.selenium.By; 4 | 5 | import java.util.List; 6 | 7 | public abstract class Driver { 8 | public abstract void start(Browser browser); 9 | public abstract void quit(); 10 | public abstract void goToUrl(String url); 11 | public abstract void waitForAjax(); 12 | public abstract Element findElement(By locator); 13 | public abstract List findElements(By locator); 14 | } -------------------------------------------------------------------------------- /chapter16-handling-waits/src/main/java/adapterpattern/Element.java: -------------------------------------------------------------------------------- 1 | package adapterpattern; 2 | 3 | import org.openqa.selenium.By; 4 | 5 | public abstract class Element { 6 | public abstract By getBy(); 7 | public abstract String getText(); 8 | public abstract Boolean isEnabled(); 9 | public abstract Boolean isDisplayed(); 10 | public abstract void typeText(String text) throws InterruptedException; 11 | public abstract void click(); 12 | public abstract String getAttribute(String attributeName); 13 | } 14 | -------------------------------------------------------------------------------- /chapter16-handling-waits/src/main/java/decoratorpattern/Browser.java: -------------------------------------------------------------------------------- 1 | package decoratorpattern; 2 | 3 | public enum Browser { 4 | CHROME, 5 | FIREFOX, 6 | EDGE, 7 | OPERA, 8 | SAFARI, 9 | INTERNET_EXPLORER 10 | } 11 | -------------------------------------------------------------------------------- /chapter16-handling-waits/src/main/java/decoratorpattern/Driver.java: -------------------------------------------------------------------------------- 1 | package decoratorpattern; 2 | 3 | import org.openqa.selenium.By; 4 | 5 | import java.util.List; 6 | 7 | public abstract class Driver { 8 | public abstract void start(Browser browser); 9 | public abstract void quit(); 10 | public abstract void goToUrl(String url); 11 | public abstract Element findElement(By locator); 12 | public abstract List findElements(By locator); 13 | } 14 | -------------------------------------------------------------------------------- /chapter16-handling-waits/src/main/java/decoratorpattern/DriverDecorator.java: -------------------------------------------------------------------------------- 1 | package decoratorpattern; 2 | 3 | import org.openqa.selenium.By; 4 | 5 | import java.util.List; 6 | 7 | public class DriverDecorator extends Driver { 8 | protected final Driver driver; 9 | 10 | public DriverDecorator(Driver driver) { 11 | this.driver = driver; 12 | } 13 | 14 | @Override 15 | public void start(Browser browser) { 16 | driver.start(browser); 17 | } 18 | 19 | @Override 20 | public void quit() { 21 | driver.quit(); 22 | } 23 | 24 | @Override 25 | public void goToUrl(String url) { 26 | driver.goToUrl(url); 27 | } 28 | 29 | @Override 30 | public Element findElement(By locator) { 31 | return driver.findElement(locator); 32 | } 33 | 34 | @Override 35 | public List findElements(By locator) { 36 | return driver.findElements(locator); 37 | } 38 | } -------------------------------------------------------------------------------- /chapter16-handling-waits/src/main/java/decoratorpattern/Element.java: -------------------------------------------------------------------------------- 1 | package decoratorpattern; 2 | 3 | import org.openqa.selenium.By; 4 | 5 | public abstract class Element { 6 | public abstract By getBy(); 7 | public abstract String getText(); 8 | public abstract Boolean isEnabled(); 9 | public abstract Boolean isDisplayed(); 10 | public abstract void typeText(String text) throws InterruptedException; 11 | public abstract void click(); 12 | public abstract String getAttribute(String attributeName); 13 | } 14 | -------------------------------------------------------------------------------- /chapter16-handling-waits/src/main/java/decoratorpattern/ElementDecorator.java: -------------------------------------------------------------------------------- 1 | package decoratorpattern; 2 | 3 | import org.openqa.selenium.By; 4 | 5 | public class ElementDecorator extends Element { 6 | protected final Element element; 7 | 8 | protected ElementDecorator(Element element) { 9 | this.element = element; 10 | } 11 | 12 | @Override 13 | public By getBy() { 14 | return element.getBy(); 15 | } 16 | 17 | @Override 18 | public String getText() { 19 | return element.getText(); 20 | } 21 | 22 | @Override 23 | public Boolean isEnabled() { 24 | return element.isEnabled(); 25 | } 26 | 27 | @Override 28 | public Boolean isDisplayed() { 29 | return element.isDisplayed(); 30 | } 31 | 32 | @Override 33 | public void typeText(String text) throws InterruptedException { 34 | element.typeText(text); 35 | } 36 | 37 | @Override 38 | public void click() { 39 | element.click(); 40 | } 41 | 42 | @Override 43 | public String getAttribute(String attributeName) { 44 | return element.getAttribute(attributeName); 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /chapter16-handling-waits/src/main/java/decoratorpattern/LogElement.java: -------------------------------------------------------------------------------- 1 | package decoratorpattern; 2 | 3 | import org.openqa.selenium.By; 4 | 5 | public class LogElement extends ElementDecorator { 6 | 7 | protected LogElement(Element element) { 8 | super(element); 9 | } 10 | 11 | @Override 12 | public By getBy() { 13 | return element.getBy(); 14 | } 15 | 16 | @Override 17 | public String getText() { 18 | System.out.print(String.format("Element Text = %s", element.getText())); 19 | return element.getText(); 20 | } 21 | 22 | @Override 23 | public Boolean isEnabled() { 24 | System.out.print(String.format("Element Enabled = %b", element.isEnabled())); 25 | return element.isEnabled(); 26 | } 27 | 28 | @Override 29 | public Boolean isDisplayed() { 30 | System.out.print(String.format("Element Displayed = %b", element.isDisplayed())); 31 | return element.isDisplayed(); 32 | } 33 | 34 | @Override 35 | public void typeText(String text) throws InterruptedException { 36 | System.out.print(String.format("Type Text = = %s", text)); 37 | element.typeText(text); 38 | } 39 | 40 | @Override 41 | public void click() { 42 | System.out.print("Element Clicked"); 43 | element.click(); 44 | } 45 | 46 | @Override 47 | public String getAttribute(String attributeName) { 48 | System.out.print("Element Clicked"); 49 | return element.getAttribute(attributeName); 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /chapter16-handling-waits/src/main/java/decoratorpattern/LoggingDriver.java: -------------------------------------------------------------------------------- 1 | package decoratorpattern; 2 | 3 | import org.openqa.selenium.By; 4 | 5 | import java.util.List; 6 | 7 | public class LoggingDriver extends DriverDecorator { 8 | public LoggingDriver(Driver driver) { 9 | super(driver); 10 | } 11 | 12 | @Override 13 | public void start(Browser browser) { 14 | System.out.print(String.format("start browser = %s", browser.name())); 15 | driver.start(browser); 16 | } 17 | 18 | @Override 19 | public void quit() { 20 | System.out.print("close browser"); 21 | driver.quit(); 22 | } 23 | 24 | @Override 25 | public void goToUrl(String url) { 26 | System.out.print(String.format("go to url = %s", url)); 27 | driver.goToUrl(url); 28 | } 29 | 30 | @Override 31 | public Element findElement(By locator) { 32 | System.out.print("find element"); 33 | return driver.findElement(locator); 34 | } 35 | 36 | @Override 37 | public List findElements(By locator) { 38 | System.out.print("find elements"); 39 | return driver.findElements(locator); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /chapter17-handling-exceptions/src/main/java/adapterpattern/Browser.java: -------------------------------------------------------------------------------- 1 | package adapterpattern; 2 | 3 | public enum Browser { 4 | CHROME, 5 | FIREFOX, 6 | EDGE, 7 | OPERA, 8 | SAFARI, 9 | INTERNET_EXPLORER 10 | } 11 | -------------------------------------------------------------------------------- /chapter17-handling-exceptions/src/main/java/adapterpattern/Driver.java: -------------------------------------------------------------------------------- 1 | package adapterpattern; 2 | 3 | import org.openqa.selenium.By; 4 | 5 | import java.util.List; 6 | 7 | public abstract class Driver { 8 | public abstract void start(Browser browser); 9 | public abstract void quit(); 10 | public abstract void goToUrl(String url); 11 | public abstract void waitForAjax(); 12 | public abstract Element findElement(By locator); 13 | public abstract List findElements(By locator); 14 | } -------------------------------------------------------------------------------- /chapter17-handling-exceptions/src/main/java/adapterpattern/Element.java: -------------------------------------------------------------------------------- 1 | package adapterpattern; 2 | 3 | import org.openqa.selenium.By; 4 | 5 | public abstract class Element { 6 | public abstract By getBy(); 7 | public abstract String getText(); 8 | public abstract Boolean isEnabled(); 9 | public abstract Boolean isDisplayed(); 10 | public abstract void typeText(String text) throws InterruptedException; 11 | public abstract void click(); 12 | public abstract String getAttribute(String attributeName); 13 | } 14 | -------------------------------------------------------------------------------- /chapter17-handling-exceptions/src/main/java/decoratorpattern/Browser.java: -------------------------------------------------------------------------------- 1 | package decoratorpattern; 2 | 3 | public enum Browser { 4 | CHROME, 5 | FIREFOX, 6 | EDGE, 7 | OPERA, 8 | SAFARI, 9 | INTERNET_EXPLORER 10 | } 11 | -------------------------------------------------------------------------------- /chapter17-handling-exceptions/src/main/java/decoratorpattern/Driver.java: -------------------------------------------------------------------------------- 1 | package decoratorpattern; 2 | 3 | import org.openqa.selenium.By; 4 | 5 | import java.util.List; 6 | 7 | public abstract class Driver { 8 | public abstract void start(Browser browser); 9 | public abstract void quit(); 10 | public abstract void goToUrl(String url); 11 | public abstract Element findElement(By locator); 12 | public abstract List findElements(By locator); 13 | } 14 | -------------------------------------------------------------------------------- /chapter17-handling-exceptions/src/main/java/decoratorpattern/DriverDecorator.java: -------------------------------------------------------------------------------- 1 | package decoratorpattern; 2 | 3 | import org.openqa.selenium.By; 4 | 5 | import java.util.List; 6 | 7 | public class DriverDecorator extends Driver { 8 | protected final Driver driver; 9 | 10 | public DriverDecorator(Driver driver) { 11 | this.driver = driver; 12 | } 13 | 14 | @Override 15 | public void start(Browser browser) { 16 | driver.start(browser); 17 | } 18 | 19 | @Override 20 | public void quit() { 21 | driver.quit(); 22 | } 23 | 24 | @Override 25 | public void goToUrl(String url) { 26 | driver.goToUrl(url); 27 | } 28 | 29 | @Override 30 | public Element findElement(By locator) { 31 | return driver.findElement(locator); 32 | } 33 | 34 | @Override 35 | public List findElements(By locator) { 36 | return driver.findElements(locator); 37 | } 38 | } -------------------------------------------------------------------------------- /chapter17-handling-exceptions/src/main/java/decoratorpattern/Element.java: -------------------------------------------------------------------------------- 1 | package decoratorpattern; 2 | 3 | import org.openqa.selenium.By; 4 | 5 | public abstract class Element { 6 | public abstract By getBy(); 7 | public abstract String getText(); 8 | public abstract Boolean isEnabled(); 9 | public abstract Boolean isDisplayed(); 10 | public abstract void typeText(String text) throws InterruptedException; 11 | public abstract void click(); 12 | public abstract String getAttribute(String attributeName); 13 | } 14 | -------------------------------------------------------------------------------- /chapter17-handling-exceptions/src/main/java/decoratorpattern/ElementDecorator.java: -------------------------------------------------------------------------------- 1 | package decoratorpattern; 2 | 3 | import org.openqa.selenium.By; 4 | 5 | public class ElementDecorator extends Element { 6 | protected final Element element; 7 | 8 | protected ElementDecorator(Element element) { 9 | this.element = element; 10 | } 11 | 12 | @Override 13 | public By getBy() { 14 | return element.getBy(); 15 | } 16 | 17 | @Override 18 | public String getText() { 19 | return element.getText(); 20 | } 21 | 22 | @Override 23 | public Boolean isEnabled() { 24 | return element.isEnabled(); 25 | } 26 | 27 | @Override 28 | public Boolean isDisplayed() { 29 | return element.isDisplayed(); 30 | } 31 | 32 | @Override 33 | public void typeText(String text) throws InterruptedException { 34 | element.typeText(text); 35 | } 36 | 37 | @Override 38 | public void click() { 39 | element.click(); 40 | } 41 | 42 | @Override 43 | public String getAttribute(String attributeName) { 44 | return element.getAttribute(attributeName); 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /chapter17-handling-exceptions/src/main/java/decoratorpattern/LogElement.java: -------------------------------------------------------------------------------- 1 | package decoratorpattern; 2 | 3 | import org.openqa.selenium.By; 4 | 5 | public class LogElement extends ElementDecorator { 6 | 7 | protected LogElement(Element element) { 8 | super(element); 9 | } 10 | 11 | @Override 12 | public By getBy() { 13 | return element.getBy(); 14 | } 15 | 16 | @Override 17 | public String getText() { 18 | System.out.print(String.format("Element Text = %s", element.getText())); 19 | return element.getText(); 20 | } 21 | 22 | @Override 23 | public Boolean isEnabled() { 24 | System.out.print(String.format("Element Enabled = %b", element.isEnabled())); 25 | return element.isEnabled(); 26 | } 27 | 28 | @Override 29 | public Boolean isDisplayed() { 30 | System.out.print(String.format("Element Displayed = %b", element.isDisplayed())); 31 | return element.isDisplayed(); 32 | } 33 | 34 | @Override 35 | public void typeText(String text) throws InterruptedException { 36 | System.out.print(String.format("Type Text = = %s", text)); 37 | element.typeText(text); 38 | } 39 | 40 | @Override 41 | public void click() { 42 | System.out.print("Element Clicked"); 43 | element.click(); 44 | } 45 | 46 | @Override 47 | public String getAttribute(String attributeName) { 48 | System.out.print("Element Clicked"); 49 | return element.getAttribute(attributeName); 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /chapter17-handling-exceptions/src/main/java/decoratorpattern/LoggingDriver.java: -------------------------------------------------------------------------------- 1 | package decoratorpattern; 2 | 3 | import org.openqa.selenium.By; 4 | 5 | import java.util.List; 6 | 7 | public class LoggingDriver extends DriverDecorator { 8 | public LoggingDriver(Driver driver) { 9 | super(driver); 10 | } 11 | 12 | @Override 13 | public void start(Browser browser) { 14 | System.out.print(String.format("start browser = %s", browser.name())); 15 | driver.start(browser); 16 | } 17 | 18 | @Override 19 | public void quit() { 20 | System.out.print("close browser"); 21 | driver.quit(); 22 | } 23 | 24 | @Override 25 | public void goToUrl(String url) { 26 | System.out.print(String.format("go to url = %s", url)); 27 | driver.goToUrl(url); 28 | } 29 | 30 | @Override 31 | public Element findElement(By locator) { 32 | System.out.print("find element"); 33 | return driver.findElement(locator); 34 | } 35 | 36 | @Override 37 | public List findElements(By locator) { 38 | System.out.print("find elements"); 39 | return driver.findElements(locator); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /chapter18-event-listeners/src/main/java/adapterpattern/Browser.java: -------------------------------------------------------------------------------- 1 | package adapterpattern; 2 | 3 | public enum Browser { 4 | CHROME, 5 | FIREFOX, 6 | EDGE, 7 | OPERA, 8 | SAFARI, 9 | INTERNET_EXPLORER 10 | } 11 | -------------------------------------------------------------------------------- /chapter18-event-listeners/src/main/java/adapterpattern/Driver.java: -------------------------------------------------------------------------------- 1 | package adapterpattern; 2 | 3 | import org.openqa.selenium.By; 4 | import org.openqa.selenium.support.events.WebDriverListener; 5 | 6 | import java.util.List; 7 | 8 | public abstract class Driver { 9 | public abstract void start(Browser browser); 10 | public abstract void quit(); 11 | public abstract void goToUrl(String url); 12 | public abstract void waitForAjax(); 13 | public abstract List getWebDriverListener(); 14 | public abstract Element findElement(By locator); 15 | public abstract List findElements(By locator); 16 | } -------------------------------------------------------------------------------- /chapter18-event-listeners/src/main/java/adapterpattern/Element.java: -------------------------------------------------------------------------------- 1 | package adapterpattern; 2 | 3 | import org.openqa.selenium.By; 4 | 5 | public abstract class Element { 6 | public abstract By getBy(); 7 | public abstract String getText(); 8 | public abstract Boolean isEnabled(); 9 | public abstract Boolean isDisplayed(); 10 | public abstract void typeText(String text) throws InterruptedException; 11 | public abstract void click(); 12 | public abstract String getAttribute(String attributeName); 13 | } 14 | -------------------------------------------------------------------------------- /chapter18-event-listeners/src/main/java/decoratorpattern/Browser.java: -------------------------------------------------------------------------------- 1 | package decoratorpattern; 2 | 3 | public enum Browser { 4 | CHROME, 5 | FIREFOX, 6 | EDGE, 7 | OPERA, 8 | SAFARI, 9 | INTERNET_EXPLORER 10 | } 11 | -------------------------------------------------------------------------------- /chapter18-event-listeners/src/main/java/decoratorpattern/Driver.java: -------------------------------------------------------------------------------- 1 | package decoratorpattern; 2 | 3 | import org.openqa.selenium.By; 4 | 5 | import java.util.List; 6 | 7 | public abstract class Driver { 8 | public abstract void start(Browser browser); 9 | public abstract void quit(); 10 | public abstract void goToUrl(String url); 11 | public abstract Element findElement(By locator); 12 | public abstract List findElements(By locator); 13 | } 14 | -------------------------------------------------------------------------------- /chapter18-event-listeners/src/main/java/decoratorpattern/DriverDecorator.java: -------------------------------------------------------------------------------- 1 | package decoratorpattern; 2 | 3 | import org.openqa.selenium.By; 4 | 5 | import java.util.List; 6 | 7 | public class DriverDecorator extends Driver { 8 | protected final Driver driver; 9 | 10 | public DriverDecorator(Driver driver) { 11 | this.driver = driver; 12 | } 13 | 14 | @Override 15 | public void start(Browser browser) { 16 | driver.start(browser); 17 | } 18 | 19 | @Override 20 | public void quit() { 21 | driver.quit(); 22 | } 23 | 24 | @Override 25 | public void goToUrl(String url) { 26 | driver.goToUrl(url); 27 | } 28 | 29 | @Override 30 | public Element findElement(By locator) { 31 | return driver.findElement(locator); 32 | } 33 | 34 | @Override 35 | public List findElements(By locator) { 36 | return driver.findElements(locator); 37 | } 38 | } -------------------------------------------------------------------------------- /chapter18-event-listeners/src/main/java/decoratorpattern/Element.java: -------------------------------------------------------------------------------- 1 | package decoratorpattern; 2 | 3 | import org.openqa.selenium.By; 4 | 5 | public abstract class Element { 6 | public abstract By getBy(); 7 | public abstract String getText(); 8 | public abstract Boolean isEnabled(); 9 | public abstract Boolean isDisplayed(); 10 | public abstract void typeText(String text) throws InterruptedException; 11 | public abstract void click(); 12 | public abstract String getAttribute(String attributeName); 13 | } 14 | -------------------------------------------------------------------------------- /chapter18-event-listeners/src/main/java/decoratorpattern/ElementDecorator.java: -------------------------------------------------------------------------------- 1 | package decoratorpattern; 2 | 3 | import org.openqa.selenium.By; 4 | 5 | public class ElementDecorator extends Element { 6 | protected final Element element; 7 | 8 | protected ElementDecorator(Element element) { 9 | this.element = element; 10 | } 11 | 12 | @Override 13 | public By getBy() { 14 | return element.getBy(); 15 | } 16 | 17 | @Override 18 | public String getText() { 19 | return element.getText(); 20 | } 21 | 22 | @Override 23 | public Boolean isEnabled() { 24 | return element.isEnabled(); 25 | } 26 | 27 | @Override 28 | public Boolean isDisplayed() { 29 | return element.isDisplayed(); 30 | } 31 | 32 | @Override 33 | public void typeText(String text) throws InterruptedException { 34 | element.typeText(text); 35 | } 36 | 37 | @Override 38 | public void click() { 39 | element.click(); 40 | } 41 | 42 | @Override 43 | public String getAttribute(String attributeName) { 44 | return element.getAttribute(attributeName); 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /chapter18-event-listeners/src/main/java/decoratorpattern/LogElement.java: -------------------------------------------------------------------------------- 1 | package decoratorpattern; 2 | 3 | import org.openqa.selenium.By; 4 | 5 | public class LogElement extends ElementDecorator { 6 | 7 | protected LogElement(Element element) { 8 | super(element); 9 | } 10 | 11 | @Override 12 | public By getBy() { 13 | return element.getBy(); 14 | } 15 | 16 | @Override 17 | public String getText() { 18 | System.out.print(String.format("Element Text = %s", element.getText())); 19 | return element.getText(); 20 | } 21 | 22 | @Override 23 | public Boolean isEnabled() { 24 | System.out.print(String.format("Element Enabled = %b", element.isEnabled())); 25 | return element.isEnabled(); 26 | } 27 | 28 | @Override 29 | public Boolean isDisplayed() { 30 | System.out.print(String.format("Element Displayed = %b", element.isDisplayed())); 31 | return element.isDisplayed(); 32 | } 33 | 34 | @Override 35 | public void typeText(String text) throws InterruptedException { 36 | System.out.print(String.format("Type Text = = %s", text)); 37 | element.typeText(text); 38 | } 39 | 40 | @Override 41 | public void click() { 42 | System.out.print("Element Clicked"); 43 | element.click(); 44 | } 45 | 46 | @Override 47 | public String getAttribute(String attributeName) { 48 | System.out.print("Element Clicked"); 49 | return element.getAttribute(attributeName); 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /chapter18-event-listeners/src/main/java/decoratorpattern/LoggingDriver.java: -------------------------------------------------------------------------------- 1 | package decoratorpattern; 2 | 3 | import org.openqa.selenium.By; 4 | 5 | import java.util.List; 6 | 7 | public class LoggingDriver extends DriverDecorator { 8 | public LoggingDriver(Driver driver) { 9 | super(driver); 10 | } 11 | 12 | @Override 13 | public void start(Browser browser) { 14 | System.out.print(String.format("start browser = %s", browser.name())); 15 | driver.start(browser); 16 | } 17 | 18 | @Override 19 | public void quit() { 20 | System.out.print("close browser"); 21 | driver.quit(); 22 | } 23 | 24 | @Override 25 | public void goToUrl(String url) { 26 | System.out.print(String.format("go to url = %s", url)); 27 | driver.goToUrl(url); 28 | } 29 | 30 | @Override 31 | public Element findElement(By locator) { 32 | System.out.print("find element"); 33 | return driver.findElement(locator); 34 | } 35 | 36 | @Override 37 | public List findElements(By locator) { 38 | System.out.print("find elements"); 39 | return driver.findElements(locator); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /chapter18-event-listeners/src/main/java/listeners/EventListener.java: -------------------------------------------------------------------------------- 1 | package listeners; 2 | 3 | import java.util.HashSet; 4 | import java.util.Set; 5 | import java.util.function.Consumer; 6 | 7 | public class EventListener { 8 | private final Set> listeners = new HashSet<>(); 9 | 10 | public void addListener(Consumer listener) { 11 | listeners.add(listener); 12 | } 13 | 14 | public void broadcast(TArgs args) { 15 | if (listeners.size() > 0) { 16 | listeners.forEach(x -> x.accept(args)); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /chapter18-event-listeners/src/main/java/listeners/ExceptionAnalysisWebDriverListener.java: -------------------------------------------------------------------------------- 1 | package listeners; 2 | 3 | import com.google.common.base.Throwables; 4 | import org.openqa.selenium.By; 5 | import org.openqa.selenium.JavascriptExecutor; 6 | import org.openqa.selenium.WebDriver; 7 | import org.openqa.selenium.WebElement; 8 | import org.openqa.selenium.support.events.WebDriverListener; 9 | 10 | import java.io.PrintWriter; 11 | import java.io.StringWriter; 12 | import java.util.ArrayList; 13 | 14 | public class ExceptionAnalysisWebDriverListener implements WebDriverListener { 15 | public void onException(Throwable e, WebDriver driver) { 16 | ArrayList exceptionCapture = new ArrayList<>(); 17 | exceptionCapture.add(e.getMessage()); 18 | String stackTraceText = Throwables.getStackTraceAsString(e); 19 | exceptionCapture.add(stackTraceText); 20 | 21 | ((JavascriptExecutor) driver).executeScript("lambda-exceptions", exceptionCapture); 22 | 23 | ((JavascriptExecutor) driver).executeScript("lambda-status=failed"); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /chapter18-event-listeners/src/main/java/listeners/HighlightElementWebDriverListener.java: -------------------------------------------------------------------------------- 1 | package listeners; 2 | 3 | import org.openqa.selenium.By; 4 | import org.openqa.selenium.JavascriptExecutor; 5 | import org.openqa.selenium.WebDriver; 6 | import org.openqa.selenium.WebElement; 7 | import org.openqa.selenium.support.events.WebDriverListener; 8 | 9 | public class HighlightElementWebDriverListener implements WebDriverListener { 10 | public void afterFindBy(By arg0, WebElement arg1, WebDriver arg2) { 11 | highlightElement(arg2, arg1); 12 | } 13 | 14 | private void highlightElement(WebDriver driver, WebElement element) { 15 | ((JavascriptExecutor)driver).executeScript("highlight(arguments[0])", element); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /chapter18-event-listeners/src/main/java/listeners/Log.java: -------------------------------------------------------------------------------- 1 | package listeners; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | 5 | public class Log { 6 | public final static EventListener LOGGED_ENTRY = new EventListener<>(); 7 | public final static EventListener LOGGED_INFO = new EventListener<>(); 8 | public final static EventListener LOGGED_ERROR = new EventListener<>(); 9 | 10 | public static void info(@NotNull String format, Object... args) { 11 | String info = String.format(format, args); 12 | LOGGED_ENTRY.broadcast(new LoggerActionEventArgs(info)); 13 | LOGGED_INFO.broadcast(new LoggerActionEventArgs(info)); 14 | System.out.println(info); 15 | } 16 | 17 | public static void error(@NotNull String format, Object... args) { 18 | String error = String.format(format, args); 19 | LOGGED_ENTRY.broadcast(new LoggerActionEventArgs(error)); 20 | LOGGED_ERROR.broadcast(new LoggerActionEventArgs(error)); 21 | System.err.println(error); 22 | } 23 | } -------------------------------------------------------------------------------- /chapter18-event-listeners/src/main/java/listeners/LoggerActionEventArgs.java: -------------------------------------------------------------------------------- 1 | package listeners; 2 | 3 | import lombok.Getter; 4 | 5 | public class LoggerActionEventArgs { 6 | @Getter private final String entry; 7 | 8 | public LoggerActionEventArgs(String entry) { 9 | this.entry = entry; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /chapter18-event-listeners/src/main/java/listeners/NotificationWebDriverListener.java: -------------------------------------------------------------------------------- 1 | package listeners; 2 | 3 | import org.openqa.selenium.By; 4 | import org.openqa.selenium.JavascriptExecutor; 5 | import org.openqa.selenium.WebDriver; 6 | import org.openqa.selenium.WebElement; 7 | import org.openqa.selenium.support.events.WebDriverListener; 8 | 9 | public class NotificationWebDriverListener implements WebDriverListener { 10 | public void afterClickOn(WebElement arg0, WebDriver arg1) throws InterruptedException { 11 | growlMessage(arg1, "inside method afterClickOn on " + arg0.toString()); 12 | } 13 | 14 | public void afterFindBy(By arg0, WebElement arg1, WebDriver arg2) throws InterruptedException { 15 | growlMessage(arg2, "Find happened on " + arg1.toString() + " Using method " + arg0.toString()); 16 | } 17 | 18 | public void afterNavigateTo(String arg0, WebDriver arg1) throws InterruptedException { 19 | growlMessage(arg1, "Inside the afterNavigateTo to " + arg0); 20 | } 21 | 22 | public void onException(Throwable arg0, WebDriver arg1) throws InterruptedException { 23 | growlMessage(arg1, "Exception occurred at " + arg0.getMessage()); 24 | } 25 | 26 | private void growlMessage(WebDriver driver, String message) throws InterruptedException { 27 | // Thread.sleep(500); 28 | ((JavascriptExecutor)driver).executeScript(String.format("$.jGrowl('%s', { header: 'Important' });", message)); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /chapter18-event-listeners/src/main/java/listeners/exceptions/ErrorPageExceptionHandler.java: -------------------------------------------------------------------------------- 1 | package listeners.exceptions; 2 | 3 | public class ErrorPageExceptionHandler extends HtmlSourceExceptionHandler { 4 | public ErrorPageExceptionHandler() { 5 | super("internal server error"); 6 | } 7 | 8 | @Override 9 | public String getDetailedIssueExplanation() { 10 | return "page failed via internal server error\nPage Source:\n" + getPageSource(); 11 | } 12 | } -------------------------------------------------------------------------------- /chapter18-event-listeners/src/main/java/listeners/exceptions/ExceptionAnalysationHandler.java: -------------------------------------------------------------------------------- 1 | package listeners.exceptions; 2 | 3 | import org.openqa.selenium.WebDriver; 4 | 5 | public interface ExceptionAnalysationHandler { 6 | String getDetailedIssueExplanation(); 7 | Boolean isApplicable(WebDriver driver, Exception ex, Object... context); 8 | } 9 | -------------------------------------------------------------------------------- /chapter18-event-listeners/src/main/java/listeners/exceptions/ExceptionAnalyser.java: -------------------------------------------------------------------------------- 1 | package listeners.exceptions; 2 | 3 | import org.openqa.selenium.WebDriver; 4 | 5 | import java.util.ArrayList; 6 | import java.util.List; 7 | 8 | public class ExceptionAnalyser { 9 | private static final List exceptionAnalysationHandlers = new ArrayList<>(); 10 | 11 | public static void removeFirstExceptionAnalysationHandler() { 12 | if (exceptionAnalysationHandlers.stream().count() > 0) 13 | { 14 | exceptionAnalysationHandlers.remove(0); 15 | } 16 | } 17 | 18 | public static void analyse(WebDriver driver, Exception ex, Object... context) throws AnalyzedTestException { 19 | for (ExceptionAnalysationHandler exceptionHandler : exceptionAnalysationHandlers) { 20 | if (exceptionHandler.isApplicable(driver, ex, context)) { 21 | if (driver != null) 22 | { 23 | String url = driver.getCurrentUrl(); 24 | throw new AnalyzedTestException(exceptionHandler.getDetailedIssueExplanation(), url, ex); 25 | } 26 | else 27 | { 28 | throw new AnalyzedTestException(exceptionHandler.getDetailedIssueExplanation(), ex); 29 | } 30 | } 31 | } 32 | } 33 | 34 | public static void addExceptionAnalysationHandler(ExceptionAnalysationHandler exceptionAnalysationHandler) { 35 | exceptionAnalysationHandlers.add(0, exceptionAnalysationHandler); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /chapter18-event-listeners/src/main/java/listeners/exceptions/HtmlSourceExceptionHandler.java: -------------------------------------------------------------------------------- 1 | package listeners.exceptions; 2 | 3 | import org.openqa.selenium.WebDriver; 4 | 5 | public abstract class HtmlSourceExceptionHandler implements ExceptionAnalysationHandler { 6 | private String textToSearchInSource; 7 | private String pageSource; 8 | 9 | public String getTextToSearchInSource() { 10 | return textToSearchInSource; 11 | } 12 | 13 | public String getPageSource() { 14 | return pageSource; 15 | } 16 | 17 | public HtmlSourceExceptionHandler(String textToSearchInSource) { 18 | this.textToSearchInSource = textToSearchInSource; 19 | } 20 | 21 | @Override 22 | public Boolean isApplicable(WebDriver driver, Exception ex, Object... context) { 23 | pageSource = driver.getPageSource(); 24 | return driver.getPageSource().contains(textToSearchInSource); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /chapter18-event-listeners/src/main/java/listeners/exceptions/LoginPageUrlExceptionHandler.java: -------------------------------------------------------------------------------- 1 | package listeners.exceptions; 2 | 3 | public class LoginPageUrlExceptionHandler extends UrlExceptionHandler { 4 | 5 | public LoginPageUrlExceptionHandler() { 6 | super("login"); 7 | } 8 | 9 | @Override 10 | public String getDetailedIssueExplanation() { 11 | return "the test failed on the login web page so probably there is a problem with the authentication." + getActualUrl(); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /chapter18-event-listeners/src/main/java/listeners/exceptions/NotFoundPageExceptionHandler.java: -------------------------------------------------------------------------------- 1 | package listeners.exceptions; 2 | 3 | import org.openqa.selenium.WebDriver; 4 | 5 | public class NotFoundPageExceptionHandler extends HtmlSourceExceptionHandler { 6 | 7 | public NotFoundPageExceptionHandler() { 8 | super("404 not found"); 9 | } 10 | 11 | @Override 12 | public String getDetailedIssueExplanation() { 13 | return "the web page was not found"; 14 | } 15 | } -------------------------------------------------------------------------------- /chapter18-event-listeners/src/main/java/listeners/exceptions/UrlExceptionHandler.java: -------------------------------------------------------------------------------- 1 | package listeners.exceptions; 2 | 3 | import org.openqa.selenium.WebDriver; 4 | 5 | public abstract class UrlExceptionHandler implements ExceptionAnalysationHandler { 6 | private String textToSearchInUrl; 7 | private String actualUrl; 8 | 9 | public UrlExceptionHandler(String textToSearchInUrl) { 10 | this.textToSearchInUrl = textToSearchInUrl; 11 | } 12 | 13 | public String getTextToSearchInUrl() { 14 | return textToSearchInUrl; 15 | } 16 | 17 | public String getActualUrl() { 18 | return actualUrl; 19 | } 20 | 21 | public abstract String getDetailedIssueExplanation(); 22 | 23 | @Override 24 | public Boolean isApplicable(WebDriver driver, Exception ex, Object... context) { 25 | actualUrl = driver.getCurrentUrl(); 26 | return driver.getCurrentUrl().contains(textToSearchInUrl); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /chapter2-relativelocators-selenium4/relative-locators-test.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Document 9 | 16 | 17 | 18 | 19 |

20 | 1 21 |

22 | 2 23 | 3 24 | 4 25 |

26 | 5 27 |

28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /chapter2-relativelocators-selenium4/src/test/java/ZipInfo.java: -------------------------------------------------------------------------------- 1 | public record ZipInfo(String cityName, String state, String zipCode, String longitude, String latitude){ 2 | } -------------------------------------------------------------------------------- /chapter6-responsive-testing/src/main/java/layout/ComparingOperators.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2021 Automate The Planet Ltd. 3 | * Author: Anton Angelov 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * You may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 7 | * Unless required by applicable law or agreed to in writing, software 8 | * distributed under the License is distributed on an "AS IS" BASIS, 9 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 10 | * See the License for the specific language governing permissions and 11 | * limitations under the License. 12 | */ 13 | 14 | package layout; 15 | 16 | public enum ComparingOperators { 17 | EQUAL("="), 18 | GREATER_THAN(">"), 19 | GREATER_THAN_EQUAL(">="), 20 | LESS_THAN("<"), 21 | LESS_THAN_EQUAL("<="); 22 | 23 | private final String name; 24 | 25 | ComparingOperators(String s) { 26 | name = s; 27 | } 28 | 29 | public String toString() { 30 | return this.name; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /chapter6-responsive-testing/src/main/java/layout/LayoutComponent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2021 Automate The Planet Ltd. 3 | * Author: Anton Angelov 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * You may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 7 | * Unless required by applicable law or agreed to in writing, software 8 | * distributed under the License is distributed on an "AS IS" BASIS, 9 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 10 | * See the License for the specific language governing permissions and 11 | * limitations under the License. 12 | */ 13 | 14 | package layout; 15 | 16 | import org.openqa.selenium.Dimension; 17 | import org.openqa.selenium.Point; 18 | 19 | public interface LayoutComponent { 20 | String getComponentName(); 21 | Point getLocation(); 22 | Dimension getSize(); 23 | } 24 | -------------------------------------------------------------------------------- /chapter6-responsive-testing/src/main/java/layout/LayoutValidationEventArgs.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2021 Automate The Planet Ltd. 3 | * Author: Anton Angelov 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * You may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 7 | * Unless required by applicable law or agreed to in writing, software 8 | * distributed under the License is distributed on an "AS IS" BASIS, 9 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 10 | * See the License for the specific language governing permissions and 11 | * limitations under the License. 12 | */ 13 | 14 | package layout; 15 | 16 | import lombok.Getter; 17 | 18 | public class LayoutValidationEventArgs { 19 | @Getter private final String message; 20 | 21 | public LayoutValidationEventArgs(String message) { 22 | this.message = message; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /chapter6-responsive-testing/src/main/java/layout/Screen.java: -------------------------------------------------------------------------------- 1 | package layout; 2 | 3 | import org.openqa.selenium.Dimension; 4 | import org.openqa.selenium.Point; 5 | import org.openqa.selenium.WebDriver; 6 | 7 | public class Screen implements LayoutComponent { 8 | private final Point location; 9 | private final Dimension size; 10 | 11 | Screen(WebDriver driver) { 12 | location = new Point(0, 0); 13 | size = driver.manage().window().getSize(); 14 | } 15 | 16 | @Override 17 | public String getComponentName() { 18 | return "Screen"; 19 | } 20 | 21 | @Override 22 | public Point getLocation() { 23 | return location; 24 | } 25 | 26 | @Override 27 | public Dimension getSize() { 28 | return size; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /chapter6-responsive-testing/src/main/java/layout/SpecialComponents.java: -------------------------------------------------------------------------------- 1 | package layout; 2 | 3 | import org.openqa.selenium.Dimension; 4 | import org.openqa.selenium.Point; 5 | import org.openqa.selenium.WebDriver; 6 | 7 | public class SpecialComponents { 8 | public static LayoutComponent getViewport(WebDriver driver) { 9 | return new Viewport(driver); 10 | } 11 | 12 | public static LayoutComponent getScreen(WebDriver driver) { 13 | return new Screen(driver); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /chapter6-responsive-testing/src/main/java/layout/Viewport.java: -------------------------------------------------------------------------------- 1 | package layout; 2 | 3 | import org.openqa.selenium.Dimension; 4 | import org.openqa.selenium.JavascriptExecutor; 5 | import org.openqa.selenium.Point; 6 | import org.openqa.selenium.WebDriver; 7 | 8 | public class Viewport implements LayoutComponent { 9 | private final Point location; 10 | private final Dimension size; 11 | 12 | Viewport(WebDriver driver) { 13 | var javaScriptService = (JavascriptExecutor)driver; 14 | location = new Point(0, 0); 15 | var viewportWidth = Integer.parseInt(javaScriptService.executeScript("return Math.max(document.documentElement.clientWidth, window.innerWidth || 0);").toString()); 16 | var viewportHeight = Integer.parseInt(javaScriptService.executeScript("return Math.max(document.documentElement.clientHeight, window.innerHeight || 0);").toString()); 17 | size = new Dimension(viewportWidth, viewportHeight); 18 | } 19 | 20 | @Override 21 | public String getComponentName() { 22 | return "Viewport"; 23 | } 24 | 25 | @Override 26 | public Point getLocation() { 27 | return location; 28 | } 29 | 30 | @Override 31 | public Dimension getSize() { 32 | return size; 33 | } 34 | } 35 | --------------------------------------------------------------------------------