@quickpickle/playwright 0.9.7 → 0.9.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -0
- package/dist/PlaywrightWorld.cjs +65 -9
- package/dist/PlaywrightWorld.cjs.map +1 -1
- package/dist/PlaywrightWorld.d.ts +24 -1
- package/dist/PlaywrightWorld.mjs +65 -9
- package/dist/PlaywrightWorld.mjs.map +1 -1
- package/dist/actions.steps.cjs +106 -49
- package/dist/actions.steps.cjs.map +1 -1
- package/dist/actions.steps.mjs +106 -49
- package/dist/actions.steps.mjs.map +1 -1
- package/dist/helpers.cjs +53 -0
- package/dist/helpers.cjs.map +1 -0
- package/dist/helpers.d.ts +7 -0
- package/dist/helpers.mjs +47 -0
- package/dist/helpers.mjs.map +1 -0
- package/dist/outcomes.steps.cjs +209 -122
- package/dist/outcomes.steps.cjs.map +1 -1
- package/dist/outcomes.steps.mjs +197 -110
- package/dist/outcomes.steps.mjs.map +1 -1
- package/package.json +4 -3
package/README.md
CHANGED
|
@@ -119,6 +119,7 @@ export default {
|
|
|
119
119
|
explodeTags: [
|
|
120
120
|
['nojs','js'],
|
|
121
121
|
['chromium','firefox','webkit'],
|
|
122
|
+
['mobile','tablet','desktop','widescreen'],
|
|
122
123
|
],
|
|
123
124
|
|
|
124
125
|
// PlaywrightWorld configuration
|
|
@@ -140,6 +141,7 @@ export default {
|
|
|
140
141
|
explodeTags: [
|
|
141
142
|
['nojs','js'],
|
|
142
143
|
['chromium','firefox','webkit'],
|
|
144
|
+
['mobile','tablet','desktop','widescreen'],
|
|
143
145
|
],
|
|
144
146
|
|
|
145
147
|
// PlaywrightWorld configuration
|
|
@@ -165,6 +167,11 @@ export type PlaywrightWorldConfigSetting = Partial<{
|
|
|
165
167
|
headless: boolean // whether to run the browser in headless mode (default true)
|
|
166
168
|
slowMo: boolean|number // whether to run the browser with slow motion enabled (default false)
|
|
167
169
|
slowMoMs: number // the number of milliseconds to slow down the browser by (default 500)
|
|
170
|
+
keyboardDelay: number // the number of milliseconds between key presses (default:20)
|
|
171
|
+
defaultBrowser: 'chromium'|'firefox'|'webkit' // the default browser to use (default: chromium)
|
|
172
|
+
browserSizes: Record<string,string> // the default browser sizes to use, in the form "widthxheight"
|
|
173
|
+
// (default: { mobile: "480x640", tablet: "1024x768", desktop: "1920x1080", widescreen: "3440x1440" })
|
|
174
|
+
defaultBrowserSize: string // the default browser size to use (default: desktop)
|
|
168
175
|
}>
|
|
169
176
|
```
|
|
170
177
|
|
package/dist/PlaywrightWorld.cjs
CHANGED
|
@@ -14,36 +14,88 @@ const defaultPlaywrightWorldConfig = {
|
|
|
14
14
|
headless: true,
|
|
15
15
|
slowMo: false,
|
|
16
16
|
slowMoMs: 500,
|
|
17
|
+
keyboardDelay: 20,
|
|
18
|
+
defaultBrowser: 'chromium',
|
|
19
|
+
browserSizes: {
|
|
20
|
+
mobile: '480x640',
|
|
21
|
+
tablet: '1024x768',
|
|
22
|
+
desktop: '1920x1080',
|
|
23
|
+
widescreen: '3440x1440',
|
|
24
|
+
},
|
|
25
|
+
defaultBrowserSize: 'desktop',
|
|
17
26
|
};
|
|
18
27
|
class PlaywrightWorld extends quickpickle.QuickPickleWorld {
|
|
19
28
|
constructor(context, info, worldConfig = {}) {
|
|
20
29
|
super(context, info);
|
|
21
30
|
this.playwrightConfig = defaultPlaywrightWorldConfig;
|
|
31
|
+
this.setConfig(worldConfig);
|
|
32
|
+
}
|
|
33
|
+
async init() {
|
|
34
|
+
await this.startBrowser();
|
|
35
|
+
this.browserContext = await this.browser.newContext({
|
|
36
|
+
serviceWorkers: 'block',
|
|
37
|
+
javaScriptEnabled: this.tagsMatch(this.playwrightConfig.nojsTags) ? false : true,
|
|
38
|
+
});
|
|
39
|
+
this.page = await this.browserContext.newPage();
|
|
40
|
+
await this.setViewportSize();
|
|
41
|
+
}
|
|
42
|
+
get browserName() {
|
|
43
|
+
return this.info.tags.find(t => t.match(/^@(?:chromium|firefox|webkit)$/))?.replace(/^@/, '') ?? this.playwrightConfig.defaultBrowser ?? 'chromium';
|
|
44
|
+
}
|
|
45
|
+
get browserSize() {
|
|
46
|
+
let tag = this.tagsMatch(this.browserSizeTags)?.[0]?.replace(/^@/, '');
|
|
47
|
+
let sizeStr = (tag
|
|
48
|
+
? this.playwrightConfig.browserSizes[tag.replace(/^@/, '')]
|
|
49
|
+
: this.playwrightConfig.browserSizes[this.playwrightConfig.defaultBrowserSize]) ?? '1920x1080';
|
|
50
|
+
return getDimensions(sizeStr);
|
|
51
|
+
}
|
|
52
|
+
get browserSizeTags() {
|
|
53
|
+
return Object.keys(this.playwrightConfig.browserSizes).map(k => `@${k}`);
|
|
54
|
+
}
|
|
55
|
+
setConfig(worldConfig) {
|
|
22
56
|
let newConfig = lodashEs.defaultsDeep(worldConfig || {}, defaultPlaywrightWorldConfig);
|
|
23
57
|
newConfig.nojsTags = quickpickle.normalizeTags(newConfig.nojsTags);
|
|
24
58
|
newConfig.showBrowserTags = quickpickle.normalizeTags(newConfig.showBrowserTags);
|
|
25
59
|
newConfig.slowMoTags = quickpickle.normalizeTags(newConfig.slowMoTags);
|
|
60
|
+
if (!['chromium', 'firefox', 'webkit'].includes(newConfig.defaultBrowser))
|
|
61
|
+
newConfig.defaultBrowser = 'chromium';
|
|
26
62
|
if (typeof newConfig.slowMo === 'number') {
|
|
27
63
|
newConfig.slowMoMs = newConfig.slowMo;
|
|
28
64
|
newConfig.slowMo = newConfig.slowMoMs > 0;
|
|
29
65
|
}
|
|
30
66
|
this.playwrightConfig = newConfig;
|
|
31
67
|
}
|
|
32
|
-
async
|
|
33
|
-
|
|
34
|
-
|
|
68
|
+
async setViewportSize(size) {
|
|
69
|
+
if (size) {
|
|
70
|
+
size = size.replace(/^['"]/, '').replace(/['"]$/, '');
|
|
71
|
+
if (this.playwrightConfig.browserSizes[size]) {
|
|
72
|
+
await this.page.setViewportSize(getDimensions(this.playwrightConfig.browserSizes[size]));
|
|
73
|
+
}
|
|
74
|
+
else if (size.match(/^\d+x\d+$/)) {
|
|
75
|
+
await this.page.setViewportSize(getDimensions(size));
|
|
76
|
+
}
|
|
77
|
+
else
|
|
78
|
+
throw new Error(`Invalid browser size: ${size}
|
|
79
|
+
(found: ${this.playwrightConfig.browserSizes[size]})
|
|
80
|
+
(available: ${Object.keys(this.playwrightConfig.browserSizes).join(', ')})`);
|
|
81
|
+
}
|
|
82
|
+
else
|
|
83
|
+
await this.page.setViewportSize(this.browserSize);
|
|
84
|
+
}
|
|
85
|
+
async startBrowser() {
|
|
86
|
+
this.browser = await browsers[this.browserName].launch({
|
|
35
87
|
headless: this.tagsMatch(this.playwrightConfig.showBrowserTags) ? false : this.playwrightConfig.headless,
|
|
36
88
|
slowMo: (this.playwrightConfig.slowMo || this.tagsMatch(this.playwrightConfig.slowMoTags)) ? this.playwrightConfig.slowMoMs : 0
|
|
37
89
|
});
|
|
38
|
-
this.browserContext = await this.browser.newContext({
|
|
39
|
-
serviceWorkers: 'block',
|
|
40
|
-
javaScriptEnabled: this.tagsMatch(this.playwrightConfig.nojsTags) ? false : true,
|
|
41
|
-
});
|
|
42
|
-
this.page = await this.browserContext.newPage();
|
|
43
90
|
}
|
|
44
|
-
async reset() {
|
|
91
|
+
async reset(conf) {
|
|
45
92
|
await this.page?.close();
|
|
46
93
|
await this.browserContext?.close();
|
|
94
|
+
if (conf) {
|
|
95
|
+
await this.browser.close();
|
|
96
|
+
await this.setConfig(conf);
|
|
97
|
+
await this.startBrowser();
|
|
98
|
+
}
|
|
47
99
|
this.browserContext = await this.browser.newContext({
|
|
48
100
|
serviceWorkers: 'block'
|
|
49
101
|
});
|
|
@@ -59,6 +111,10 @@ class PlaywrightWorld extends quickpickle.QuickPickleWorld {
|
|
|
59
111
|
return new URL(this.playwrightConfig.host);
|
|
60
112
|
}
|
|
61
113
|
}
|
|
114
|
+
function getDimensions(size) {
|
|
115
|
+
let [width, height] = size.split('x').map(Number);
|
|
116
|
+
return { width, height };
|
|
117
|
+
}
|
|
62
118
|
quickpickle.After(async (world) => {
|
|
63
119
|
await world.browserContext.close();
|
|
64
120
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlaywrightWorld.cjs","sources":["../src/PlaywrightWorld.ts"],"sourcesContent":[null],"names":["chromium","firefox","webkit","QuickPickleWorld","defaultsDeep","normalizeTags","After"],"mappings":";;;;;;AAMA,MAAM,QAAQ,GAAG,YAAEA,mBAAQ,WAAEC,kBAAO,UAAEC,iBAAM,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"PlaywrightWorld.cjs","sources":["../src/PlaywrightWorld.ts"],"sourcesContent":[null],"names":["chromium","firefox","webkit","QuickPickleWorld","defaultsDeep","normalizeTags","After"],"mappings":"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"}
|
|
@@ -11,6 +11,10 @@ export type PlaywrightWorldConfigSetting = Partial<{
|
|
|
11
11
|
headless: boolean;
|
|
12
12
|
slowMo: boolean | number;
|
|
13
13
|
slowMoMs: number;
|
|
14
|
+
keyboardDelay: number;
|
|
15
|
+
defaultBrowser: 'chromium' | 'firefox' | 'webkit';
|
|
16
|
+
browserSizes: Record<string, string>;
|
|
17
|
+
defaultBrowserSize: string;
|
|
14
18
|
}>;
|
|
15
19
|
export declare const defaultPlaywrightWorldConfig: {
|
|
16
20
|
host: string;
|
|
@@ -21,9 +25,19 @@ export declare const defaultPlaywrightWorldConfig: {
|
|
|
21
25
|
headless: boolean;
|
|
22
26
|
slowMo: boolean;
|
|
23
27
|
slowMoMs: number;
|
|
28
|
+
keyboardDelay: number;
|
|
29
|
+
defaultBrowser: string;
|
|
30
|
+
browserSizes: {
|
|
31
|
+
mobile: string;
|
|
32
|
+
tablet: string;
|
|
33
|
+
desktop: string;
|
|
34
|
+
widescreen: string;
|
|
35
|
+
};
|
|
36
|
+
defaultBrowserSize: string;
|
|
24
37
|
};
|
|
25
38
|
export type PlaywrightWorldConfig = typeof defaultPlaywrightWorldConfig & {
|
|
26
39
|
port?: number;
|
|
40
|
+
browserSizes: Record<string, string>;
|
|
27
41
|
};
|
|
28
42
|
export declare class PlaywrightWorld extends QuickPickleWorld {
|
|
29
43
|
browser: Browser;
|
|
@@ -32,7 +46,16 @@ export declare class PlaywrightWorld extends QuickPickleWorld {
|
|
|
32
46
|
playwrightConfig: PlaywrightWorldConfig;
|
|
33
47
|
constructor(context: TestContext, info: QuickPickleWorldInterface['info'] | undefined, worldConfig?: PlaywrightWorldConfigSetting);
|
|
34
48
|
init(): Promise<void>;
|
|
35
|
-
|
|
49
|
+
get browserName(): "chromium" | "firefox" | "webkit";
|
|
50
|
+
get browserSize(): {
|
|
51
|
+
width: number;
|
|
52
|
+
height: number;
|
|
53
|
+
};
|
|
54
|
+
get browserSizeTags(): string[];
|
|
55
|
+
setConfig(worldConfig: PlaywrightWorldConfigSetting): void;
|
|
56
|
+
setViewportSize(size?: string): Promise<void>;
|
|
57
|
+
startBrowser(): Promise<void>;
|
|
58
|
+
reset(conf?: PlaywrightWorldConfigSetting): Promise<void>;
|
|
36
59
|
close(): Promise<void>;
|
|
37
60
|
get baseUrl(): URL;
|
|
38
61
|
}
|
package/dist/PlaywrightWorld.mjs
CHANGED
|
@@ -12,36 +12,88 @@ const defaultPlaywrightWorldConfig = {
|
|
|
12
12
|
headless: true,
|
|
13
13
|
slowMo: false,
|
|
14
14
|
slowMoMs: 500,
|
|
15
|
+
keyboardDelay: 20,
|
|
16
|
+
defaultBrowser: 'chromium',
|
|
17
|
+
browserSizes: {
|
|
18
|
+
mobile: '480x640',
|
|
19
|
+
tablet: '1024x768',
|
|
20
|
+
desktop: '1920x1080',
|
|
21
|
+
widescreen: '3440x1440',
|
|
22
|
+
},
|
|
23
|
+
defaultBrowserSize: 'desktop',
|
|
15
24
|
};
|
|
16
25
|
class PlaywrightWorld extends QuickPickleWorld {
|
|
17
26
|
constructor(context, info, worldConfig = {}) {
|
|
18
27
|
super(context, info);
|
|
19
28
|
this.playwrightConfig = defaultPlaywrightWorldConfig;
|
|
29
|
+
this.setConfig(worldConfig);
|
|
30
|
+
}
|
|
31
|
+
async init() {
|
|
32
|
+
await this.startBrowser();
|
|
33
|
+
this.browserContext = await this.browser.newContext({
|
|
34
|
+
serviceWorkers: 'block',
|
|
35
|
+
javaScriptEnabled: this.tagsMatch(this.playwrightConfig.nojsTags) ? false : true,
|
|
36
|
+
});
|
|
37
|
+
this.page = await this.browserContext.newPage();
|
|
38
|
+
await this.setViewportSize();
|
|
39
|
+
}
|
|
40
|
+
get browserName() {
|
|
41
|
+
return this.info.tags.find(t => t.match(/^@(?:chromium|firefox|webkit)$/))?.replace(/^@/, '') ?? this.playwrightConfig.defaultBrowser ?? 'chromium';
|
|
42
|
+
}
|
|
43
|
+
get browserSize() {
|
|
44
|
+
let tag = this.tagsMatch(this.browserSizeTags)?.[0]?.replace(/^@/, '');
|
|
45
|
+
let sizeStr = (tag
|
|
46
|
+
? this.playwrightConfig.browserSizes[tag.replace(/^@/, '')]
|
|
47
|
+
: this.playwrightConfig.browserSizes[this.playwrightConfig.defaultBrowserSize]) ?? '1920x1080';
|
|
48
|
+
return getDimensions(sizeStr);
|
|
49
|
+
}
|
|
50
|
+
get browserSizeTags() {
|
|
51
|
+
return Object.keys(this.playwrightConfig.browserSizes).map(k => `@${k}`);
|
|
52
|
+
}
|
|
53
|
+
setConfig(worldConfig) {
|
|
20
54
|
let newConfig = defaultsDeep(worldConfig || {}, defaultPlaywrightWorldConfig);
|
|
21
55
|
newConfig.nojsTags = normalizeTags(newConfig.nojsTags);
|
|
22
56
|
newConfig.showBrowserTags = normalizeTags(newConfig.showBrowserTags);
|
|
23
57
|
newConfig.slowMoTags = normalizeTags(newConfig.slowMoTags);
|
|
58
|
+
if (!['chromium', 'firefox', 'webkit'].includes(newConfig.defaultBrowser))
|
|
59
|
+
newConfig.defaultBrowser = 'chromium';
|
|
24
60
|
if (typeof newConfig.slowMo === 'number') {
|
|
25
61
|
newConfig.slowMoMs = newConfig.slowMo;
|
|
26
62
|
newConfig.slowMo = newConfig.slowMoMs > 0;
|
|
27
63
|
}
|
|
28
64
|
this.playwrightConfig = newConfig;
|
|
29
65
|
}
|
|
30
|
-
async
|
|
31
|
-
|
|
32
|
-
|
|
66
|
+
async setViewportSize(size) {
|
|
67
|
+
if (size) {
|
|
68
|
+
size = size.replace(/^['"]/, '').replace(/['"]$/, '');
|
|
69
|
+
if (this.playwrightConfig.browserSizes[size]) {
|
|
70
|
+
await this.page.setViewportSize(getDimensions(this.playwrightConfig.browserSizes[size]));
|
|
71
|
+
}
|
|
72
|
+
else if (size.match(/^\d+x\d+$/)) {
|
|
73
|
+
await this.page.setViewportSize(getDimensions(size));
|
|
74
|
+
}
|
|
75
|
+
else
|
|
76
|
+
throw new Error(`Invalid browser size: ${size}
|
|
77
|
+
(found: ${this.playwrightConfig.browserSizes[size]})
|
|
78
|
+
(available: ${Object.keys(this.playwrightConfig.browserSizes).join(', ')})`);
|
|
79
|
+
}
|
|
80
|
+
else
|
|
81
|
+
await this.page.setViewportSize(this.browserSize);
|
|
82
|
+
}
|
|
83
|
+
async startBrowser() {
|
|
84
|
+
this.browser = await browsers[this.browserName].launch({
|
|
33
85
|
headless: this.tagsMatch(this.playwrightConfig.showBrowserTags) ? false : this.playwrightConfig.headless,
|
|
34
86
|
slowMo: (this.playwrightConfig.slowMo || this.tagsMatch(this.playwrightConfig.slowMoTags)) ? this.playwrightConfig.slowMoMs : 0
|
|
35
87
|
});
|
|
36
|
-
this.browserContext = await this.browser.newContext({
|
|
37
|
-
serviceWorkers: 'block',
|
|
38
|
-
javaScriptEnabled: this.tagsMatch(this.playwrightConfig.nojsTags) ? false : true,
|
|
39
|
-
});
|
|
40
|
-
this.page = await this.browserContext.newPage();
|
|
41
88
|
}
|
|
42
|
-
async reset() {
|
|
89
|
+
async reset(conf) {
|
|
43
90
|
await this.page?.close();
|
|
44
91
|
await this.browserContext?.close();
|
|
92
|
+
if (conf) {
|
|
93
|
+
await this.browser.close();
|
|
94
|
+
await this.setConfig(conf);
|
|
95
|
+
await this.startBrowser();
|
|
96
|
+
}
|
|
45
97
|
this.browserContext = await this.browser.newContext({
|
|
46
98
|
serviceWorkers: 'block'
|
|
47
99
|
});
|
|
@@ -57,6 +109,10 @@ class PlaywrightWorld extends QuickPickleWorld {
|
|
|
57
109
|
return new URL(this.playwrightConfig.host);
|
|
58
110
|
}
|
|
59
111
|
}
|
|
112
|
+
function getDimensions(size) {
|
|
113
|
+
let [width, height] = size.split('x').map(Number);
|
|
114
|
+
return { width, height };
|
|
115
|
+
}
|
|
60
116
|
After(async (world) => {
|
|
61
117
|
await world.browserContext.close();
|
|
62
118
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlaywrightWorld.mjs","sources":["../src/PlaywrightWorld.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAMA,MAAM,QAAQ,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"PlaywrightWorld.mjs","sources":["../src/PlaywrightWorld.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
package/dist/actions.steps.cjs
CHANGED
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var quickpickle = require('quickpickle');
|
|
4
|
+
var test = require('@playwright/test');
|
|
5
|
+
var helpers = require('./helpers.cjs');
|
|
4
6
|
var path = require('node:path');
|
|
5
7
|
var url = require('node:url');
|
|
6
8
|
|
|
7
9
|
var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;
|
|
8
10
|
const projectRoot = path.resolve(path.dirname(url.fileURLToPath((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('actions.steps.cjs', document.baseURI).href)))), '..');
|
|
11
|
+
// ================
|
|
12
|
+
// Navigation
|
|
9
13
|
quickpickle.Given('I am on {string}', async function (world, path) {
|
|
10
14
|
let url = new URL(path, world.baseUrl);
|
|
11
15
|
await world.page.goto(url.href);
|
|
@@ -21,63 +25,116 @@ quickpickle.When(`I navigate/go to {string}`, async function (world, path) {
|
|
|
21
25
|
quickpickle.When('I load the file {string}', async (world, path) => {
|
|
22
26
|
await world.page.goto(`file://${projectRoot}/${path}`);
|
|
23
27
|
});
|
|
28
|
+
quickpickle.When('I go back/forward/forwards', async function (world) {
|
|
29
|
+
let direction = world.info.step?.match(/(back|forwards?)$/)[0];
|
|
30
|
+
if (direction === 'back')
|
|
31
|
+
await world.page.goBack();
|
|
32
|
+
else
|
|
33
|
+
await world.page.goForward();
|
|
34
|
+
});
|
|
35
|
+
// ================
|
|
36
|
+
// Interaction
|
|
24
37
|
quickpickle.When('I click/press/tap/touch (on ){string}', async function (world, identifier) {
|
|
25
|
-
|
|
38
|
+
let locator = world.page.getByText(identifier, { exact: true });
|
|
39
|
+
await test.expect(locator).toBeVisible({ timeout: 1000 });
|
|
40
|
+
await locator.click();
|
|
26
41
|
});
|
|
27
42
|
quickpickle.When('I click/press/tap/touch (on )the {string} {word}', async function (world, identifier, role) {
|
|
28
|
-
let locator;
|
|
29
|
-
|
|
30
|
-
locator = await world.page.getByText(identifier, { exact: true }).or(world.page.locator(identifier));
|
|
31
|
-
else
|
|
32
|
-
locator = await world.page.getByRole(role, { name: identifier });
|
|
43
|
+
let locator = await helpers.getLocator(world.page, identifier, role);
|
|
44
|
+
await test.expect(locator).toBeVisible({ timeout: 1000 });
|
|
33
45
|
await locator.click();
|
|
34
46
|
});
|
|
35
47
|
quickpickle.When('I focus/select/activate (on ){string}', async function (world, identifier) {
|
|
36
|
-
let locator = await world.page.getByText(identifier, { exact: true })
|
|
48
|
+
let locator = await world.page.getByText(identifier, { exact: true });
|
|
49
|
+
await test.expect(locator).toBeVisible({ timeout: 1000 });
|
|
37
50
|
await locator.focus();
|
|
38
51
|
});
|
|
39
52
|
quickpickle.When('I focus/select/activate (on )the {string} {word}', async function (world, identifier, role) {
|
|
40
|
-
let locator;
|
|
41
|
-
|
|
42
|
-
locator = await world.page.getByText(identifier, { exact: true }).or(world.page.locator(identifier));
|
|
43
|
-
else
|
|
44
|
-
locator = await world.page.getByRole(role, { name: identifier });
|
|
53
|
+
let locator = await helpers.getLocator(world.page, identifier, role);
|
|
54
|
+
await test.expect(locator).toBeVisible({ timeout: 1000 });
|
|
45
55
|
await locator.focus();
|
|
46
56
|
});
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
57
|
+
// ================
|
|
58
|
+
// Typing
|
|
59
|
+
quickpickle.When("for/in/on (the ){string} I type {string}", async function (world, identifier, value) {
|
|
60
|
+
let locator = await helpers.getLocator(world.page, identifier, 'input');
|
|
61
|
+
await locator.pressSequentially(value);
|
|
62
|
+
});
|
|
63
|
+
quickpickle.When("for/in/on (the ){string} {word} I type {string}", async function (world, identifier, role, value) {
|
|
64
|
+
let locator = await helpers.getLocator(world.page, identifier, role);
|
|
65
|
+
await locator.pressSequentially(value);
|
|
66
|
+
});
|
|
67
|
+
quickpickle.When('I type the following keys: {}', async function (world, keys) {
|
|
68
|
+
let keyPresses = keys.split(' ');
|
|
69
|
+
for (let key of keyPresses)
|
|
70
|
+
await world.page.keyboard.press(key, { delay: world.playwrightConfig.keyboardDelay });
|
|
71
|
+
});
|
|
72
|
+
quickpickle.When("for/in/on (the ){string} I type the following keys: {}", async function (world, identifier, keys) {
|
|
73
|
+
let locator = await helpers.getLocator(world.page, identifier, 'input');
|
|
74
|
+
for (let key of keys)
|
|
75
|
+
await locator.press(key, { delay: world.playwrightConfig.keyboardDelay });
|
|
76
|
+
});
|
|
77
|
+
quickpickle.When("for/in/on (the ){string} {word} I type the following keys: {}", async function (world, identifier, role, keys) {
|
|
78
|
+
let locator = await helpers.getLocator(world.page, identifier, role);
|
|
79
|
+
for (let key of keys)
|
|
80
|
+
await locator.press(key, { delay: world.playwrightConfig.keyboardDelay });
|
|
81
|
+
});
|
|
82
|
+
// ================
|
|
83
|
+
// Forms
|
|
84
|
+
quickpickle.When("for/in/on (the ){string} I enter/fill/select (in ){string}", async function (world, identifier, value) {
|
|
85
|
+
let locator = await helpers.getLocator(world.page, identifier, 'input');
|
|
86
|
+
await helpers.setValue(locator, value);
|
|
87
|
+
});
|
|
88
|
+
quickpickle.When("for/in/on (the ){string} {word} I enter/fill/select (in ){string}", async function (world, identifier, role, value) {
|
|
89
|
+
let locator = await helpers.getLocator(world.page, identifier, role);
|
|
90
|
+
await helpers.setValue(locator, value);
|
|
91
|
+
});
|
|
92
|
+
quickpickle.When("for/in/on (the ){string} I enter/fill/select (in )the following( text):", async function (world, identifier, value) {
|
|
93
|
+
let locator = await helpers.getLocator(world.page, identifier, 'input');
|
|
94
|
+
await helpers.setValue(locator, value.toString());
|
|
50
95
|
});
|
|
51
|
-
quickpickle.When("for (the ){string} I enter/fill (in )the following( text):", async function (world, identifier,
|
|
52
|
-
let locator = await
|
|
53
|
-
await locator.
|
|
96
|
+
quickpickle.When("for/in/on (the ){string} {word} I enter/fill/select (in )the following( text):", async function (world, identifier, role, value) {
|
|
97
|
+
let locator = await helpers.getLocator(world.page, identifier, role);
|
|
98
|
+
await helpers.setValue(locator, value.toString());
|
|
54
99
|
});
|
|
55
100
|
quickpickle.When('I enter/fill (in )the following( fields):', async function (world, table) {
|
|
101
|
+
let rows = table.raw();
|
|
102
|
+
let hasRole = rows[0].length === 3;
|
|
56
103
|
for (let row of table.raw()) {
|
|
57
|
-
let [identifier,
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
if (tag === 'select') {
|
|
62
|
-
await locator.selectOption(text);
|
|
63
|
-
}
|
|
64
|
-
else if (type === 'checkbox' || type === 'radio') {
|
|
65
|
-
let checked = (['', 'false', 'no', 'unchecked', 'null', 'undefined', '0']).includes(text.toLowerCase()) ? false : true;
|
|
66
|
-
await locator.setChecked(checked);
|
|
67
|
-
}
|
|
68
|
-
else {
|
|
69
|
-
await locator.fill(text);
|
|
104
|
+
let [identifier, role, value] = row;
|
|
105
|
+
if (!hasRole) {
|
|
106
|
+
value = role;
|
|
107
|
+
role = 'input';
|
|
70
108
|
}
|
|
109
|
+
let locator = await helpers.getLocator(world.page, identifier, role);
|
|
110
|
+
await helpers.setValue(locator, value);
|
|
71
111
|
}
|
|
72
112
|
});
|
|
73
|
-
quickpickle.When('I
|
|
113
|
+
quickpickle.When('I check (the ){string}( radio)( checkbox)( box)', async function (world, indentifier) {
|
|
114
|
+
let locator = await helpers.getLocator(world.page, indentifier, 'input');
|
|
115
|
+
await locator.check();
|
|
116
|
+
});
|
|
117
|
+
quickpickle.When('I uncheck (the ){string}( checkbox)( box)', async function (world, indentifier) {
|
|
118
|
+
let locator = await helpers.getLocator(world.page, indentifier, 'input');
|
|
119
|
+
await locator.uncheck();
|
|
120
|
+
});
|
|
121
|
+
// ================
|
|
122
|
+
// Waiting
|
|
123
|
+
quickpickle.When('I wait for {string} to be attached/detatched/visible/hidden', async function (world, text) {
|
|
74
124
|
let state = world.info.step?.match(/(attached|detatched|visible|hidden)$/)[0];
|
|
75
|
-
let locator =
|
|
76
|
-
await locator.waitFor({ state });
|
|
125
|
+
let locator = world.page.getByText(text);
|
|
126
|
+
await locator.waitFor({ state, timeout: 5000 });
|
|
127
|
+
});
|
|
128
|
+
quickpickle.When('I wait for a/an/the {string} {word} to be attached/detatched/visible/hidden', async function (world, identifier, role) {
|
|
129
|
+
let state = world.info.step?.match(/(attached|detatched|visible|hidden)$/)[0];
|
|
130
|
+
let locator = await helpers.getLocator(world.page, identifier, role);
|
|
131
|
+
await locator.waitFor({ state, timeout: 5000 });
|
|
77
132
|
});
|
|
78
133
|
quickpickle.When('I wait for {int}ms', async function (world, num) {
|
|
79
134
|
await world.page.waitForTimeout(num);
|
|
80
135
|
});
|
|
136
|
+
// ================
|
|
137
|
+
// Scrolling
|
|
81
138
|
quickpickle.When('I scroll down/up/left/right', async function (world) {
|
|
82
139
|
let direction = world.info.step?.match(/(down|up|left|right)$/)[0];
|
|
83
140
|
let num = 100;
|
|
@@ -93,24 +150,24 @@ quickpickle.When('I scroll down/up/left/right {int}(px)( pixels)', async functio
|
|
|
93
150
|
await world.page.mouse.wheel(direction === 'right' ? num : -num, 0);
|
|
94
151
|
await world.page.mouse.wheel(0, direction === 'down' ? num : -num);
|
|
95
152
|
});
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
for (let key of keyPresses) {
|
|
99
|
-
await world.page.keyboard.press(key);
|
|
100
|
-
}
|
|
101
|
-
});
|
|
102
|
-
quickpickle.When('I go back/forwards?', async function (world) {
|
|
103
|
-
let direction = world.info.step?.match(/(back|forwards?)$/)[0];
|
|
104
|
-
if (direction === 'back')
|
|
105
|
-
await world.page.goBack();
|
|
106
|
-
else
|
|
107
|
-
await world.page.goForward();
|
|
108
|
-
});
|
|
153
|
+
// ================
|
|
154
|
+
// Screenshots
|
|
109
155
|
quickpickle.Then('(I )take (a )screenshot', async function (world) {
|
|
110
|
-
|
|
156
|
+
let path = helpers.sanitizeFilepath(`${projectRoot}/${helpers.defaultScreenshotPath(world)}`);
|
|
157
|
+
await world.page.screenshot({ path });
|
|
111
158
|
});
|
|
112
159
|
quickpickle.Then('(I )take (a )screenshot named {string}', async function (world, name) {
|
|
113
|
-
|
|
160
|
+
let explodedTags = world.info.explodedIdx ? `_(${world.info.tags.join(',')})` : '';
|
|
161
|
+
let path = helpers.sanitizeFilepath(`${projectRoot}/${world.playwrightConfig.screenshotDir}/${name}${explodedTags}.png`);
|
|
162
|
+
await world.page.screenshot({ path });
|
|
163
|
+
});
|
|
164
|
+
// ================
|
|
165
|
+
// Browser size
|
|
166
|
+
quickpickle.Given('the browser size is (set to ){word}', async function (world, browserSizeTag) {
|
|
167
|
+
await world.setViewportSize(browserSizeTag);
|
|
168
|
+
});
|
|
169
|
+
quickpickle.Given('the browser size is (set to ){int} x {int}', async function (world, width, height) {
|
|
170
|
+
await world.page.setViewportSize({ width, height });
|
|
114
171
|
});
|
|
115
172
|
|
|
116
173
|
exports.projectRoot = projectRoot;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actions.steps.cjs","sources":["../src/actions.steps.ts"],"sourcesContent":[null],"names":["Given","When","Then"],"mappings":"
|
|
1
|
+
{"version":3,"file":"actions.steps.cjs","sources":["../src/actions.steps.ts"],"sourcesContent":[null],"names":["Given","When","expect","getLocator","setValue","Then","sanitizeFilepath","defaultScreenshotPath"],"mappings":"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"}
|