Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/qavajs/steps-playwright
Collection of playwright steps for qavajs framework
https://github.com/qavajs/steps-playwright
qa test-automation testing
Last synced: 3 days ago
JSON representation
Collection of playwright steps for qavajs framework
- Host: GitHub
- URL: https://github.com/qavajs/steps-playwright
- Owner: qavajs
- License: mit
- Created: 2022-10-05T13:03:39.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2024-11-01T11:06:49.000Z (14 days ago)
- Last Synced: 2024-11-06T08:44:09.198Z (9 days ago)
- Topics: qa, test-automation, testing
- Language: TypeScript
- Size: 1.19 MB
- Stars: 15
- Watchers: 1
- Forks: 6
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
[![npm version](https://badge.fury.io/js/@qavajs%2Fsteps-playwright.svg)](https://badge.fury.io/js/@qavajs%2Fsteps-playwright)
# @qavajs/steps-playwright
Step library to work with playwright in qavajs framework## Installation
`npm install @qavajs/steps-playwright`
## Configuration
```javascript
const App = require('./page_object');
module.exports = {
default: {
require: [
'node_modules/@qavajs/steps-playwright/index.js'
],
browser: {
timeout: {
present: 10000,
visible: 20000,
page: 10000,
value: 5000, // expect value timeout
valueInterval: 500, // expect value interval
pageRefreshInterval: 2000 // refresh page for _I refresh page..._ steps
},
capabilities: {
browserName: 'chromium'
}
},
pageObject: new App()
}
}
```## Global variables
@qavajs/steps-playwright exposes following global variables
| variable | type | description |
|------------------|----------------------------------|---------------------------------------------------------------|
| `browser` | `Browser \| ElectronApplication` | browser instance |
| `driver` | `Browser \| ElectronApplication` | browser instance (alias for browser) |
| `context` | `BrowserContext` | current browser context |
| `page` | `Page` | current context page |
| `browserManager` | `BrowserManager` | manager to control all opened browsers and electron instances |## Connect to playwright server
In order to connect to playwright server pass _wsEndpoint_ property in capabilities object
```typescript
module.exports = {
default: {
browser: {
capabilities: {
browserName: 'chromium',
wsEndpoint: 'ws://127.0.0.1:60291/2bd48ce272de2b543e4c8c533f664b83'
}
},
}
}
```## Connect to cdp endpoint
In order to connect to CDP endpoint pass _cdpEndpoint_ property in capabilities object
```typescript
module.exports = {
default: {
browser: {
capabilities: {
browserName: 'chromium',
cdpEndpoint: 'http://localhost:9222/'
}
},
}
}
```## Screenshot strategy
@qavajs/steps-playwright has build-in capability to take screenshot on particular event. If you need to add
screenshot to your report add _screenshot.event_ property to profile config.
Supported events:
- onFail
- beforeStep
- afterStep```javascript
module.exports = {
default: {
browser: {
screenshot: {
event: ['onFail'], //event to take screenshot
fullPage: true // option to take full page screenshot (default false)
}
}
}
}
```## Playwright traces
@qavajs support capturing playwright traces.
https://playwright.dev/docs/next/trace-viewer-introTrace Viewer - https://trace.playwright.dev/
```typescript
export default {
//...
browser: {
trace: {
event: ['onFail'], // Events to save trace. Possible value onFail or afterScenario
dir: 'dirToStoreTraces', // Dir to store traces. Default - traces/
attach: true, // Whether trace need to be attached to cucumber report. Default - false
screenshots: true, // Whether to capture screenshots during tracing. Screenshots are used to build a timeline preview. Default - true
snapshots: true, // Whether to capture DOM and network activity
}
}
}
```## Video
```typescript
export default {
//...
browser: {
video: {
event: ['onFail'], // Events to save video. Possible value onFail or afterScenario
dir: 'dirToStoreVideo', // Dir to store video. Default is video/
size: { width: 640, height: 480 }, // Video resolution
attach: true // Define if trace need to be attached to cucumber report. Default false
}
}
}
```## Typescript
To properly use globals exposed by @qavajs/steps-playwright add corresponding types to tsconfig.json
```json
{
"compilerOptions": {
"types": [
"@qavajs/steps-playwright/globals"
]
}
}
```## reuseSession
reuseSession flag allows to share session between tests in frames of process. But setting of this flag
transfers session control to user.```javascript
module.exports = {
default: {
browser: {
reuseSession: true
}
}
}
```## restartBrowser
restartBrowser flag allows to restart browser between tests instead of default restarting context```javascript
module.exports = {
default: {
browser: {
restartBrowser: true
}
}
}
```## Development and testing
Install dependencies
`npm install`Install playwright browsers
`install:browsers`Build lib
`npm run build`Execute unit test (with vitest)
`npm run test`Execute e2e browser tests
`npm run test:e2e`Execute e2e electron tests
`npm run test:e2e:electron`