UNPKG

@qavajs/steps-playwright

Version:

qavajs steps to interact with playwright

408 lines (310 loc) 11.8 kB
# Change Log All notable changes to the "@qavajs/steps-playwright" will be documented in this file. Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how to structure this file. :rocket: - new feature :beetle: - bugfix :x: - deprecation/removal :pencil: - chore :microscope: - experimental ## [2.12.0] - :rocket: added step for uploading multiple files ```Gherkin When I upload files by clicking 'File Input': | $uploadFile | | $uploadFile2 | ``` ## [2.11.2] - :rocket: added `action` timeout as default for all playwright methods (https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout) ## [2.11.1] - :rocket: updated dependencies ## [2.11.0] - :rocket: added export of `QavajsPlaywrightWorld` and `QavajsPlaywrightElectronWorld` ## [2.10.0] - :rocket: added step to interact with electron app menu ```gherkin When I click 'Test > Open Page' electron menu ``` - :rocket: added `into` preposition to type and type chars steps ## [2.9.0] - :rocket: added capability to execute script on electron main process ```gherkin Scenario: evaluate script on main process When I execute '$js(async ({ app }) => app.showAboutPanel())' script on electron app Scenario: evaluate script on main process and save result to memory When I execute '$js(async ({ app }) => app.getAppPath())' script on electron app and save result as 'appPath' Then I expect '$appPath' memory value to contain 'test-e2e/apps/electron' ``` ## [2.8.0] - :rocket: improved logging to display full path ## [2.7.1] - :rocket: updated dependencies ## [2.7.0] - :rocket: improved logging to show resolved selectors - :beetle: added default interval to prevent 'not settled promise' error ## [2.6.0] - :rocket: added capability to perform soft validation of element condition validations ```gherkin Scenario Outline: wait for condition Then I expect 'Element' to be softly present ``` ## [2.5.0] Breaking change: - :rocket: added step `I will wait for alert/dialog` ```gherkin Scenario: accept alert Given I will wait for dialog When I click 'Alert Button' And I accept dialog ``` - Added capability to provide _defaultResolver_ to define default logic to identify element ```typescript class App { defaultResolver({ alias }: { alias: string }) { return ({ parent }: { parent: Locator }) => parent.getByText(alias); } } ``` - :chore: updated playwright dependency ## [2.4.0] - :rocket: added selector logging - :rocket: added source maps - :rocket: improved readability of execute steps ## [2.3.0] - :rocket: added `I expect {value} css property of every element in {playwrightLocator} collection {validation} {value}` step ## [2.2.1] - :rocket: added capability to pass page object as instance ## [2.2.0] - :rocket: added `locator.as` method to define top level components (like pages) ```typescript export class App { LoginPage = locator.as(LoginPage); } class LoginPage { username = locator('#username'); password = locator('#password'); } ``` ## [2.1.0] - :rocket: added grouping by steps in traces - :rocket: added `FrameLocator` as possible return type for `locator.native` ## [2.0.0] - :pencil: added memory processor to playwrightLocator parameter type - :pencil: added page object end-to-end tests - :rocket: reworked page object approach - :rocket: added new function _locator_ to define page objects ```typescript import { locator } from '@qavajs/steps-playwright/po'; class App { /** * simple locator * I click 'Simple' */ Simple = locator('#simple'); /** * dynamic locator by provided argument * I click 'Template (some text)' */ Template = locator.template(text => `div:has-text("${text}")`); /** * locator that uses native playwright capabilities * I click 'Native' */ Native = locator.native(({ page }) => page.locator('#native')); } ``` - new way to define components ```typescript import { locator } from '@qavajs/steps-playwright/po'; class App { /** * I click 'Component > Child' */ Component = locator('#parent').as(Component); } class Component { Child = locator('#child') } ``` - removed collection in favor of template locators - :x: - removed frame steps in favor of using frame locators - :x: - removed wait steps in favor of validation steps - :x: - removed multi-browser steps ## [1.0.0] - release 1.0.0 ## [0.54.0] - :rocket: added _I save file to {string} by clicking {string}_ step ## [0.53.0] - :rocket: added _I grant {string} permission_ step - :rocket: added _I revoke browser permissions_ step - :rocket: added _I set {string} geolocation_ step - :beetle: improved _I scroll until_ steps to use same locator ## [0.52.0] - :rocket: added _I wait for network idle {playwrightTimeout}_ step ## [0.51.0] Breaking change: - :rocket: include page objects into step bundle Migration guide: replace all po-playwright lib imports `@qavajs/po-playwright` to `@qavajs/steps-playwright/po` ## [0.50.0] - :rocket: added _I click {string} until text of {string} {playwrightValidation} {string}( ){playwrightTimeout}_ step - :rocket: added _I click {string} until value of {string} {playwrightValidation} {string}( ){playwrightTimeout}_ step ## [0.49.0] - :rocket: added capability to configure traces - :pencil: update playwright to 1.45.1 ## [0.48.0] Breaking change: moved _@qavajs/validation_ to peer dependencies After update please install latest version of @qavajs/validation package - :x: - removed playwright runner code as it moved to separate package @qavajs/playwright ## [0.47.1] - :beetle: enhance logic of _I refresh page until text of {string} {playwrightValidation} {string}( ){playwrightTimeout}_ step ## [0.47.0] - :rocket: updated collection validation to use polling ## [0.46.3] - :rocket: added _I refresh page until text of {string} {playwrightValidation} {string}( ){playwrightTimeout}_ step - :rocket: added _I refresh page until {string} {playwrightConditionWait}( ){playwrightTimeout}_ step ## [0.46.2] - :beetle: added error handling during trace attach - :pencil: updated dependencies ## [0.46.1] - :beetle: updated compile target ## [0.46.0] - :microscope: added experimental support of playwright ui ## [0.45.0] - :pencil: cleaned up dependencies - :rocket: added value wait and validation ## [0.44.0] - :rocket: added option to take full page screenshot (_config.browser.screenshot.fullPage_) - :x: top level _config.screenshot_ property was removed. Define this property in _config.browser.screenshot_ - updated playwright version ## [0.43.1] - :beetle: fixed globals.d.ts file name - updated playwright version ## [0.43.1] - :beetle: fixed globals.d.ts file name - updated playwright version ## [0.43.0] - :rocket: added _I scroll until {string} to be visible_ step - :rocket: added _I scroll in {string} until {string} to be visible_ step ## [0.42.0] - :rocket: added _I tap {string}_ step ```gherkin When I tap 'Button' ``` - :beetle: added present timeout for value waits ## [0.41.5] - :beetle: updated validation package ## [0.41.4] - :beetle: added existence waiter before value waits to avoid promise reject without reason error - :rocket: added _restartBrowser_ config flag to restart browser between tests (default is false, considering restarting context) ## [0.41.3] - :rocket: added _I type {string} chars to {string}_ step ## [0.41.2] - :rocket: replaced deprecated type() method with fill() ## [0.41.1] - :rocket: added _reuseSession_ option to keep browser/application opened after test ends ## [0.41.0] - :rocket: introduced browserManager object to control all launched browser and electron instances - :rocket: added steps to start/stop/switch to other browser/electron instances ## [0.40.0] - :rocket: changed simple expects to poll expects - :rocket: changed behavior of _I switch to {string} window_ step (now it is wait for window existence) - :rocket: replaced _playwrightValueWait_ type with more generic _playwrightValueWait_ allowing more wait types Breaking change: value waits now depends on _value_ timeout - :beetle: fixed getting of electron context ## [0.39.0] - :rocket: enabled logger for page objects ## [0.38.0] - :rocket: added _I close current tab_ step ## [0.37.0] - :rocket: added _I wait until {string} css property of {string} {playwrightValueWait} {string}( ){playwrightTimeout}_ step - :rocket: added experimental electron support - :rocket: added js selector strategy (you can pass js expression that returns iterator of document nodes) ```javascript class YourComponent { Element = $('js=document.querySelectorAll("div.class")') } ``` ## [0.36.0] - :rocket: added _I save full page screenshot as {string}_ step ## [0.35.0] - :rocket: added _I click {playwrightBrowserButton} button_ step ## [0.34.0] - :rocket: added _I upload {string} file by clicking {string}_ step - :rocket: added _I save bounding rect of {string} as {string}_ step ## [0.33.0] - :rocket: added _I set window size {string}_ step ## [0.32.0] - :rocket: added _I click {string} coordinates in {string}_ step ## [0.31.0] - :rocket: added _I scroll to {string}_ step ## [0.30.0] Deprecated: - :x: screenshot property moved to browser/driver config. Screenshot under root is marked as deprecated and will be removed in future releases. ## [0.29.1] - :beetle: fixed video attachment ## [0.29.0] - :rocket: added _I save screenshot of {string} as {string}_ step ## [0.28.0] - :rocket: added _I expect every element in {string} collection {playwrightConditionWait}_ step ## [0.27.0] - :rocket: added video recording ## [0.26.0] - :rocket: added mouse and keyboard actions steps ## [0.25.0] - :rocket: added enabled/disabled validation - :beetle: fixed issue with default timeouts - :beetle: fixed regexp in dynamic po steps ## [0.0.24] - :rocket: added _I open new tab_ - :rocket: added steps to work with multiple browser contexts ## [0.0.23] - :rocket: added types to global members - :rocket: added _I switch to 'IFrame' frame_ - :rocket: added _I switch to 'window name or title' window_ ## [0.0.22] - :beetle: fixed exports of mock and poDefine ## [0.0.21] - :rocket: added I drag and drop... step ## [0.0.20] - :rocket: enabled all options in new context - :rocket: implemented context reload instead browser ## [0.0.19] - :rocket: added to match value wait - :rocket: added in viewport validation ## [0.0.18] - :rocket: added interceptor steps - :rocket: added support of multiple events for taking screenshots ## [0.0.17] - :rocket: added _I force click_ step - :beetle: added support of memory values in _I click '$value' text in 'collection' collection_ ## [0.0.16] - :beetle: fixed optional params templates in wait steps ## [0.0.15] - :rocket: added validation logs ## [0.0.14] - :rocket: added custom timeout parameter ## [0.0.13] - :rocket: added JS alert steps - :rocket: added _I press button given number of times_ step ## [0.0.12] - :rocket: added _I upload file_ step ## [0.0.11] - :rocket: removed po package dependency - :rocket: added util functions exports to build custom steps ## [0.0.9] - :rocket: added scroll by offset steps - :rocket: updated po dependency to support ignoreHierarchy options ## [0.0.8] - :beetle: fixed issue that opens page from browser, not from context - :rocket: added mock steps - :rocket: added playwright traces ## [0.0.7] - :rocket: added capability to connect via CDP - :rocket: added I wait until current url step - :rocket: added I wait until page title step - :rocket: added I execute steps allow to execute client functions ## [0.0.6] - :beetle: fixed issue in After hook if browser is not started - :rocket: added I save css property step - :rocket: added I expect css property step - :rocket: added capability to connect to playwright server