0.1.1 • Published 1 month ago
@qavajs/playwright-runner-adapter v0.1.1
@qavajs/playwright-runner-adapter
Adapter to run cucumberjs tests via playwright test runner
Installation
npm install @qavajs/playwright-runner-adapter
Basic Configuration
Create cucumber config file
Set paths and require properties
export default {
paths: ['test/features/*.feature'],
require: ['test/step_definitions/*.ts']
}
Set testDir
Set testDir to adapter
export default defineConfig({
testDir: resolve('node_modules/@qavajs/playwright-runner-adapter/adapter')
});
Add cucumber config
Set CONFIG and PROFILE environment variables e.g via dotenv library
CONFIG=test/cucumber.ts
PROFILE=default
Advanced Configuration
Customizing test instance
Custom test instance can be passed to world constructor as test property. And then fixtures can be connected with world instance via init property.
import { test as base } from '@playwright/test';
import { SettingsPage } from './settings-page';
import { setWorldConstructor } from '@cucumber/cucumber';
import { PlaywrightWorld } from '@qavajs/playwright-runner-adapter/PlaywrightWorld';
type MyFixtures = {
settingsPage: SettingsPage;
};
const customTest = base.extend<MyFixtures>({
settingsPage: async ({ page }, use) => {
await use(new SettingsPage(page));
},
});
class ExtendedPlaywrightWorld extends PlaywrightWorld {
settingsPage: SettingsPage;
constructor(options: any) {
super(options);
}
test = customTest;
// init arrow function connects fixtures with Cucumber world instance
init = ({ settingsPage }) => {
this.settingsPage = settingsPage;
}
}