gitextract_s20x1q0_/ ├── .dockerignore ├── .editorconfig ├── .gitignore ├── .npmignore ├── .prettierrc ├── .travis.yml ├── CHANGELOG.MD ├── CONTRIBUTING.MD ├── Dockerfile ├── LICENSE ├── MIGRATION-2.0.0.MD ├── MIGRATION-2.2.0.MD ├── MIGRATION-3.0.0.MD ├── ROADMAP.MD ├── build.sh ├── docker-compose.yml ├── docs/ │ ├── browserstack.md │ ├── configuration.md │ ├── cross-browser.md │ ├── docker.md │ ├── extending.md │ ├── headless.md │ ├── hooks.md │ ├── how-it-works.md │ ├── index.md │ ├── matchers.md │ ├── parallel-testing.md │ ├── performance-testing.md │ ├── quickstart.md │ ├── steps-debug.md │ ├── steps-elements.md │ ├── steps-files.md │ ├── steps-forms.md │ ├── steps-generators.md │ ├── steps-navigation.md │ ├── steps-rest.md │ ├── testing-rest-api.md │ └── transformers.md ├── functional-tests/ │ ├── dictionaries/ │ │ └── test-dictionary.js │ ├── downloads/ │ │ ├── .gitkeep │ │ └── example.xlsx │ ├── features/ │ │ ├── content/ │ │ │ ├── operations_on_stored_variables.feature │ │ │ ├── validate_tabular_data.feature │ │ │ ├── validate_tabular_data_css.feature │ │ │ ├── wait_for_element_dissapear.feature │ │ │ └── wait_for_element_dissapear_css.feature │ │ ├── drag-and-drop/ │ │ │ ├── operations_on_elements.feature │ │ │ └── operations_on_elements_css.feature │ │ ├── forms/ │ │ │ ├── fill_and_check_form.feature │ │ │ ├── fill_and_check_form_css.feature │ │ │ └── fill_select.feature │ │ ├── matchers/ │ │ │ ├── match_current_date.feature │ │ │ ├── match_current_date_css.feature │ │ │ ├── matchers.feature │ │ │ └── matchers_css.feature │ │ ├── navigation/ │ │ │ ├── navigate_to_given_page.feature │ │ │ ├── navigate_to_given_page_css.feature │ │ │ └── switch-between-tabs.feature │ │ ├── pages/ │ │ │ └── verify_displayed_page.feature │ │ ├── testing-api/ │ │ │ ├── testing_delete_request.feature │ │ │ ├── testing_get_response.feature │ │ │ ├── testing_headers_setting.feature │ │ │ ├── testing_patch_request.feature │ │ │ ├── testing_post_form_data.feature │ │ │ └── testing_post_json.feature │ │ └── wait-for-elements/ │ │ ├── wait_for_form.feature │ │ ├── wait_for_form_css.feature │ │ └── wait_for_table.feature │ ├── kakunin.conf.js │ ├── package.json │ ├── pages/ │ │ ├── absolutePage.js │ │ ├── additionalParams.js │ │ ├── appearSimpleForm.js │ │ ├── appearSimpleFormPost.js │ │ ├── appearTabularData.js │ │ ├── buttonForm.js │ │ ├── dragAndDrop.js │ │ ├── google.js │ │ ├── main.js │ │ ├── matchers.js │ │ ├── navigationPages.js │ │ ├── simpleForm.js │ │ ├── simpleFormPost.js │ │ ├── simpleSelectForm.js │ │ └── tabularData.js │ ├── regexes/ │ │ └── index.js │ ├── step_definitions/ │ │ └── custom_json_parser.js │ └── www/ │ ├── index.js │ ├── jsonData/ │ │ └── xlsxData.router.js │ └── views/ │ ├── absolute/ │ │ └── index.njs │ ├── drag-and-drop/ │ │ └── index.njs │ ├── form/ │ │ ├── disappear.njs │ │ ├── select.njs │ │ └── simple.njs │ ├── index.njs │ ├── layout/ │ │ └── default.njs │ ├── matchers/ │ │ └── matchers.njs │ ├── navigation/ │ │ └── page.njs │ ├── table/ │ │ └── tabular-data.njs │ └── wait-for-appear/ │ ├── form.njs │ └── table.njs ├── package.json ├── readme.md ├── src/ │ ├── cli.ts │ ├── comparators/ │ │ ├── comparator/ │ │ │ ├── date.comparator.spec.ts │ │ │ ├── date.comparator.ts │ │ │ ├── index.ts │ │ │ ├── number.comparator.spec.ts │ │ │ └── number.comparator.ts │ │ ├── comparator.interface.ts │ │ ├── comparators.spec.ts │ │ ├── comparators.ts │ │ └── index.ts │ ├── core/ │ │ ├── cli/ │ │ │ ├── cli.helper.spec.ts │ │ │ ├── cli.helper.ts │ │ │ └── initializer.ts │ │ ├── config.helper.ts │ │ ├── fs/ │ │ │ ├── delete-files.helper.ts │ │ │ └── prepare-catalogs.helper.ts │ │ ├── modules-loader.helper.ts │ │ └── prototypes.ts │ ├── dictionaries/ │ │ ├── base.ts │ │ ├── dictionaries.spec.ts │ │ ├── dictionaries.ts │ │ └── index.ts │ ├── emails/ │ │ ├── adapter/ │ │ │ ├── mailtrap.client.spec.ts │ │ │ └── mailtrap.client.ts │ │ ├── email.service.spec.ts │ │ ├── email.service.ts │ │ ├── filter/ │ │ │ ├── current-user.filter.ts │ │ │ ├── current-user.spec.ts │ │ │ ├── index.ts │ │ │ ├── minimal-email-size.filter.spec.ts │ │ │ ├── minimal-email-size.filter.ts │ │ │ ├── text-fields.filter.spec.ts │ │ │ └── text-fields.filter.ts │ │ ├── filters.spec.ts │ │ ├── filters.ts │ │ └── index.ts │ ├── form-handlers/ │ │ ├── form-handler.interface.ts │ │ ├── handler/ │ │ │ ├── checkbox.handler.ts │ │ │ ├── ckeditor.handler.ts │ │ │ ├── custom-angular-select.handler.ts │ │ │ ├── default.handler.ts │ │ │ ├── file.handler.ts │ │ │ ├── index.ts │ │ │ ├── radio.handler.ts │ │ │ ├── select.handler.ts │ │ │ └── uploaded-file.handler.ts │ │ ├── handlers.ts │ │ └── index.ts │ ├── generators/ │ │ ├── generator/ │ │ │ ├── index.ts │ │ │ ├── personalData.generator.spec.ts │ │ │ ├── personalData.generator.ts │ │ │ ├── string-with-length.generator.spec.ts │ │ │ └── string-with-length.generator.ts │ │ ├── generator.interface.ts │ │ ├── generators.spec.ts │ │ ├── generators.ts │ │ └── index.ts │ ├── index.ts │ ├── kakunin.d.ts │ ├── matchers/ │ │ ├── index.ts │ │ ├── matcher/ │ │ │ ├── attribute.matcher.spec.ts │ │ │ ├── attribute.matcher.ts │ │ │ ├── clickable.matcher.spec.ts │ │ │ ├── clickable.matcher.ts │ │ │ ├── currentDate.matcher.spec.ts │ │ │ ├── currentDate.matcher.ts │ │ │ ├── index.ts │ │ │ ├── invisible.matcher.spec.ts │ │ │ ├── invisible.matcher.ts │ │ │ ├── not-clickable.matcher.spec.ts │ │ │ ├── not-clickable.matcher.ts │ │ │ ├── present.matcher.spec.ts │ │ │ ├── present.matcher.ts │ │ │ ├── regex-matcher/ │ │ │ │ ├── index.spec.ts │ │ │ │ ├── index.ts │ │ │ │ ├── regex-builder.spec.ts │ │ │ │ ├── regex-builder.ts │ │ │ │ ├── regex.ts │ │ │ │ └── regexes/ │ │ │ │ └── default.ts │ │ │ ├── text.matcher.spec.ts │ │ │ ├── text.matcher.ts │ │ │ ├── visible.matcher.spec.ts │ │ │ └── visible.matcher.ts │ │ ├── matcher.interface.ts │ │ ├── matchers.spec.ts │ │ └── matchers.ts │ ├── pages/ │ │ ├── base.ts │ │ ├── form.ts │ │ └── index.ts │ ├── protractor.conf.ts │ ├── rest/ │ │ ├── api-request.ts │ │ ├── api-response.spec.ts │ │ ├── api-response.ts │ │ └── rest-api-service.ts │ ├── step_definitions/ │ │ ├── api.ts │ │ ├── debug.ts │ │ ├── elements.ts │ │ ├── email.ts │ │ ├── file.ts │ │ ├── form.ts │ │ ├── generators.ts │ │ ├── navigation.ts │ │ ├── performance.ts │ │ └── tabs.ts │ ├── tests/ │ │ ├── dictionaries/ │ │ │ └── fake-dictionary.ts │ │ └── init.ts │ ├── transformers/ │ │ ├── index.ts │ │ ├── transformer/ │ │ │ ├── dictionary.transformer.spec.ts │ │ │ ├── dictionary.transformer.ts │ │ │ ├── generator.transformer.spec.ts │ │ │ ├── generator.transformer.ts │ │ │ ├── variable-store.transformer.spec.ts │ │ │ └── variable-store.transformer.ts │ │ ├── transformer.interface.ts │ │ ├── transformers.spec.ts │ │ └── transformers.ts │ └── web/ │ ├── browsers/ │ │ ├── browsers-config.helper.ts │ │ ├── browserstack-config.helper.ts │ │ ├── create-firefox-profile.helper.ts │ │ ├── get-browser-drivers.helper.ts │ │ └── safari-browser-configurator.helper.ts │ ├── cucumber/ │ │ ├── config.ts │ │ ├── hooks/ │ │ │ ├── clear-download.hook.ts │ │ │ ├── clear-variables.hook.ts │ │ │ ├── hook.interface.ts │ │ │ ├── hooks.ts │ │ │ ├── index.ts │ │ │ ├── reload-fixtures.hook.ts │ │ │ ├── reload-user.hook.ts │ │ │ └── take-screenshots.hook.ts │ │ ├── hooks.ts │ │ └── wait-for-condition.helper.ts │ ├── fixtures/ │ │ └── fixtures-loader.helper.ts │ ├── fs/ │ │ ├── download-checker.helper.ts │ │ └── file-manager.helper.ts │ ├── parallel/ │ │ ├── chunk-specs.helper.spec.ts │ │ ├── chunk-specs.helper.ts │ │ └── prepare-browser-instance-specs.helper.ts │ ├── parameters.ts │ ├── performance/ │ │ ├── JSON-performance-report-parser.helper.spec.ts │ │ ├── JSON-performance-report-parser.helper.ts │ │ ├── time-to-first-byte-analyser.helper.spec.ts │ │ └── time-to-first-byte-analyser.helper.ts │ ├── url-parser.helper.spec.ts │ ├── url-parser.helper.ts │ ├── user-provider.helper.ts │ ├── variable-store.helper.spec.ts │ └── variable-store.helper.ts ├── templates/ │ ├── example.feature │ ├── generator.js │ ├── hook.js │ ├── login.js │ ├── matcher.js │ ├── page.js │ ├── regex.js │ └── steps.js ├── tsconfig.json ├── tsconfig.test.json ├── tslint.json └── website/ ├── README.md ├── build/ │ └── Kakunin/ │ ├── css/ │ │ ├── main.css │ │ └── prism.css │ ├── docs/ │ │ ├── 2.4.0/ │ │ │ ├── configuration/ │ │ │ │ └── index.html │ │ │ ├── configuration.html │ │ │ ├── cross-browser/ │ │ │ │ └── index.html │ │ │ ├── cross-browser.html │ │ │ ├── docker/ │ │ │ │ └── index.html │ │ │ ├── docker.html │ │ │ ├── extending/ │ │ │ │ └── index.html │ │ │ ├── extending.html │ │ │ ├── how-it-works/ │ │ │ │ └── index.html │ │ │ ├── how-it-works.html │ │ │ ├── index.html │ │ │ ├── matchers/ │ │ │ │ └── index.html │ │ │ ├── matchers.html │ │ │ ├── parallel-testing/ │ │ │ │ └── index.html │ │ │ ├── parallel-testing.html │ │ │ ├── performance-testing/ │ │ │ │ └── index.html │ │ │ ├── performance-testing.html │ │ │ ├── quickstart/ │ │ │ │ └── index.html │ │ │ ├── quickstart.html │ │ │ ├── steps-debug/ │ │ │ │ └── index.html │ │ │ ├── steps-debug.html │ │ │ ├── steps-elements/ │ │ │ │ └── index.html │ │ │ ├── steps-elements.html │ │ │ ├── steps-files/ │ │ │ │ └── index.html │ │ │ ├── steps-files.html │ │ │ ├── steps-forms/ │ │ │ │ └── index.html │ │ │ ├── steps-forms.html │ │ │ ├── steps-generators/ │ │ │ │ └── index.html │ │ │ ├── steps-generators.html │ │ │ ├── steps-navigation/ │ │ │ │ └── index.html │ │ │ ├── steps-navigation.html │ │ │ ├── transformers/ │ │ │ │ └── index.html │ │ │ └── transformers.html │ │ ├── configuration/ │ │ │ └── index.html │ │ ├── configuration.html │ │ ├── cross-browser/ │ │ │ └── index.html │ │ ├── cross-browser.html │ │ ├── docker/ │ │ │ └── index.html │ │ ├── docker.html │ │ ├── extending/ │ │ │ └── index.html │ │ ├── extending.html │ │ ├── how-it-works/ │ │ │ └── index.html │ │ ├── how-it-works.html │ │ ├── index.html │ │ ├── matchers/ │ │ │ └── index.html │ │ ├── matchers.html │ │ ├── next/ │ │ │ ├── browserstack/ │ │ │ │ └── index.html │ │ │ ├── browserstack.html │ │ │ ├── configuration/ │ │ │ │ └── index.html │ │ │ ├── configuration.html │ │ │ ├── cross-browser/ │ │ │ │ └── index.html │ │ │ ├── cross-browser.html │ │ │ ├── docker/ │ │ │ │ └── index.html │ │ │ ├── docker.html │ │ │ ├── extending/ │ │ │ │ └── index.html │ │ │ ├── extending.html │ │ │ ├── headless/ │ │ │ │ └── index.html │ │ │ ├── headless.html │ │ │ ├── hooks/ │ │ │ │ └── index.html │ │ │ ├── hooks.html │ │ │ ├── how-it-works/ │ │ │ │ └── index.html │ │ │ ├── how-it-works.html │ │ │ ├── index.html │ │ │ ├── matchers/ │ │ │ │ └── index.html │ │ │ ├── matchers.html │ │ │ ├── parallel-testing/ │ │ │ │ └── index.html │ │ │ ├── parallel-testing.html │ │ │ ├── performance-testing/ │ │ │ │ └── index.html │ │ │ ├── performance-testing.html │ │ │ ├── quickstart/ │ │ │ │ └── index.html │ │ │ ├── quickstart.html │ │ │ ├── steps-debug/ │ │ │ │ └── index.html │ │ │ ├── steps-debug.html │ │ │ ├── steps-elements/ │ │ │ │ └── index.html │ │ │ ├── steps-elements.html │ │ │ ├── steps-files/ │ │ │ │ └── index.html │ │ │ ├── steps-files.html │ │ │ ├── steps-forms/ │ │ │ │ └── index.html │ │ │ ├── steps-forms.html │ │ │ ├── steps-generators/ │ │ │ │ └── index.html │ │ │ ├── steps-generators.html │ │ │ ├── steps-navigation/ │ │ │ │ └── index.html │ │ │ ├── steps-navigation.html │ │ │ ├── steps-rest/ │ │ │ │ └── index.html │ │ │ ├── steps-rest.html │ │ │ ├── testing-rest-api/ │ │ │ │ └── index.html │ │ │ ├── testing-rest-api.html │ │ │ ├── transformers/ │ │ │ │ └── index.html │ │ │ └── transformers.html │ │ ├── parallel-testing/ │ │ │ └── index.html │ │ ├── parallel-testing.html │ │ ├── performance-testing/ │ │ │ └── index.html │ │ ├── performance-testing.html │ │ ├── quickstart/ │ │ │ └── index.html │ │ ├── quickstart.html │ │ ├── steps-debug/ │ │ │ └── index.html │ │ ├── steps-debug.html │ │ ├── steps-elements/ │ │ │ └── index.html │ │ ├── steps-elements.html │ │ ├── steps-files/ │ │ │ └── index.html │ │ ├── steps-files.html │ │ ├── steps-forms/ │ │ │ └── index.html │ │ ├── steps-forms.html │ │ ├── steps-generators/ │ │ │ └── index.html │ │ ├── steps-generators.html │ │ ├── steps-navigation/ │ │ │ └── index.html │ │ ├── steps-navigation.html │ │ ├── transformers/ │ │ │ └── index.html │ │ └── transformers.html │ ├── en/ │ │ ├── versions/ │ │ │ └── index.html │ │ └── versions.html │ ├── index.html │ ├── js/ │ │ ├── codetabs.js │ │ └── scrollSpy.js │ ├── sitemap.xml │ ├── versions/ │ │ └── index.html │ └── versions.html ├── core/ │ └── Footer.js ├── package.json ├── pages/ │ └── en/ │ └── versions.js ├── sidebars.json ├── siteConfig.js ├── static/ │ ├── css/ │ │ └── custom.css │ └── index.html ├── versioned_docs/ │ ├── version-2.4.0/ │ │ ├── configuration.md │ │ ├── cross-browser.md │ │ ├── docker.md │ │ ├── extending.md │ │ ├── how-it-works.md │ │ ├── index.md │ │ ├── matchers.md │ │ ├── parallel-testing.md │ │ ├── performance-testing.md │ │ ├── quickstart.md │ │ ├── steps-debug.md │ │ ├── steps-elements.md │ │ ├── steps-files.md │ │ ├── steps-forms.md │ │ ├── steps-generators.md │ │ ├── steps-navigation.md │ │ └── transformers.md │ └── version-2.5.0/ │ └── steps-elements.md ├── versioned_sidebars/ │ └── version-2.4.0-sidebars.json └── versions.json