@quickpickle/playwright 0.9.7 → 0.9.8

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 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
 
@@ -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 init() {
33
- let browserName = this.info.tags.find(t => t.match(/^@(?:chromium|firefox|webkit)$/))?.replace(/^@/, '') ?? 'chromium';
34
- this.browser = await browsers[browserName].launch({
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":"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"}
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
- reset(): Promise<void>;
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
  }
@@ -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 init() {
31
- let browserName = this.info.tags.find(t => t.match(/^@(?:chromium|firefox|webkit)$/))?.replace(/^@/, '') ?? 'chromium';
32
- this.browser = await browsers[browserName].launch({
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":"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"}
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;AAmBjC,MAAA,4BAA4B,GAAG;AAC1C,IAAA,IAAI,EAAE,kBAAkB;AACxB,IAAA,aAAa,EAAE,aAAa;AAC5B,IAAA,QAAQ,EAAE,CAAC,OAAO,EAAE,WAAW,CAAC;AAChC,IAAA,eAAe,EAAE,CAAC,UAAU,EAAC,eAAe,EAAC,cAAc,CAAC;IAC5D,UAAU,EAAE,CAAC,SAAS,CAAC;AACvB,IAAA,QAAQ,EAAE,IAAI;AACd,IAAA,MAAM,EAAE,KAAK;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,aAAa,EAAE,EAAE;AACjB,IAAA,cAAc,EAAE,UAAU;AAC1B,IAAA,YAAY,EAAE;AACZ,QAAA,MAAM,EAAE,SAAS;AACjB,QAAA,MAAM,EAAE,UAAU;AAClB,QAAA,OAAO,EAAE,WAAW;AACpB,QAAA,UAAU,EAAE,WAAW;AACxB,KAAA;AACD,IAAA,kBAAkB,EAAE,SAAS;EAC9B;AAOK,MAAO,eAAgB,SAAQ,gBAAgB,CAAA;AAMnD,IAAA,WAAA,CAAY,OAAmB,EAAE,IAAgD,EAAE,cAA2C,EAAE,EAAA;AAC9H,QAAA,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;QAHtB,IAAgB,CAAA,gBAAA,GAAyB,4BAA4B,CAAA;AAInE,QAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;KAC5B;AAED,IAAA,MAAM,IAAI,GAAA;AACR,QAAA,MAAM,IAAI,CAAC,YAAY,EAAE,CAAA;QACzB,IAAI,CAAC,cAAc,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;AAClD,YAAA,cAAc,EAAE,OAAO;AACvB,YAAA,iBAAiB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,GAAG,KAAK,GAAG,IAAI;AACjF,SAAA,CAAC,CAAA;QACF,IAAI,CAAC,IAAI,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAA;AAC/C,QAAA,MAAM,IAAI,CAAC,eAAe,EAAE,CAAA;KAC7B;AAED,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CACrC,gCAAgC,CACjC,CAAC,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,CAAkC,IAAI,IAAI,CAAC,gBAAgB,CAAC,cAAc,IAAI,UAAU,CAAA;KAC7G;AAED,IAAA,IAAI,WAAW,GAAA;QACb,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;QACtE,IAAI,OAAO,GAAG,CAAC,GAAG;AAChB,cAAE,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAC,EAAE,CAAC,CAAC;AAC1D,cAAE,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,KAC3E,WAAW,CAAA;AAChB,QAAA,OAAO,aAAa,CAAC,OAAO,CAAC,CAAA;KAC9B;AAED,IAAA,IAAI,eAAe,GAAA;QACjB,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAI,CAAA,EAAA,CAAC,CAAE,CAAA,CAAC,CAAA;KACzE;AAED,IAAA,SAAS,CAAC,WAAwC,EAAA;QAChD,IAAI,SAAS,GAAG,YAAY,CAAC,WAAW,IAAI,EAAE,EAAE,4BAA4B,CAAE,CAAA;QAC9E,SAAS,CAAC,QAAQ,GAAG,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;QACtD,SAAS,CAAC,eAAe,GAAG,aAAa,CAAC,SAAS,CAAC,eAAe,CAAC,CAAA;QACpE,SAAS,CAAC,UAAU,GAAG,aAAa,CAAC,SAAS,CAAC,UAAU,CAAC,CAAA;AAC1D,QAAA,IAAI,CAAC,CAAC,UAAU,EAAC,SAAS,EAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,cAAc,CAAC;AAAE,YAAA,SAAS,CAAC,cAAc,GAAG,UAAU,CAAA;AAC9G,QAAA,IAAI,OAAO,SAAS,CAAC,MAAM,KAAK,QAAQ,EAAE;AACxC,YAAA,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAA;YACrC,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,QAAQ,GAAG,CAAC,CAAA;SAC1C;AACD,QAAA,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAA;KAClC;IAED,MAAM,eAAe,CAAC,IAAY,EAAA;QAChC,IAAI,IAAI,EAAE;AACR,YAAA,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;YACrD,IAAI,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE;AAC5C,gBAAA,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;aACzF;AACI,iBAAA,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE;gBAChC,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAA;aACrD;;AACI,gBAAA,MAAM,IAAI,KAAK,CAAC,CAAA,sBAAA,EAAyB,IAAI,CAAA;AACtC,gBAAA,EAAA,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;AACpC,oBAAA,EAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAA,CAAG,CAAC,CAAA;SAC/E;;YACI,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;KACvD;AAED,IAAA,MAAM,YAAY,GAAA;AAChB,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC;YACrD,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ;AACxG,YAAA,MAAM,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,GAAG,CAAC;AAChI,SAAA,CAAC,CAAA;KACH;IAED,MAAM,KAAK,CAAC,IAAkC,EAAA;AAC5C,QAAA,MAAM,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAA;AACxB,QAAA,MAAM,IAAI,CAAC,cAAc,EAAE,KAAK,EAAE,CAAA;QAClC,IAAI,IAAI,EAAE;AACR,YAAA,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAA;AAC1B,YAAA,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;AAC1B,YAAA,MAAM,IAAI,CAAC,YAAY,EAAE,CAAA;SAC1B;QACD,IAAI,CAAC,cAAc,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;AAClD,YAAA,cAAc,EAAE,OAAO;AACxB,SAAA,CAAC,CAAA;QACF,IAAI,CAAC,IAAI,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAA;KAChD;AAED,IAAA,MAAM,KAAK,GAAA;AACT,QAAA,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAA;KAC3B;AAED,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI;AAAE,YAAA,OAAO,IAAI,GAAG,CAAC,CAAG,EAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAA,CAAA,EAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAA,CAAE,CAAC,CAAA;;YACxG,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAA;KAChD;AACF,CAAA;AAED,SAAS,aAAa,CAAC,IAAW,EAAA;AAChC,IAAA,IAAI,CAAC,KAAK,EAAC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;AAChD,IAAA,OAAO,EAAC,KAAK,EAAC,MAAM,EAAC,CAAA;AACvB,CAAC;AAED,KAAK,CAAC,OAAO,KAAqB,KAAI;AACpC,IAAA,MAAM,KAAK,CAAC,cAAc,CAAC,KAAK,EAAE,CAAA;AACpC,CAAC,CAAC;;;;"}
@@ -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
- await world.page.getByText(identifier, { exact: true }).click();
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
- if (role === 'element')
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 }).or(world.page.locator(identifier));
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
- if (role === 'element')
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
- quickpickle.When("for (the ){string} I enter/fill (in ){string}", async function (world, identifier, text) {
48
- let locator = await world.page.getByLabel(identifier).or(world.page.getByPlaceholder(identifier)).or(world.page.locator(identifier));
49
- await locator.fill(text);
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, text) {
52
- let locator = await world.page.getByLabel(identifier).or(world.page.getByPlaceholder(identifier)).or(world.page.locator(identifier));
53
- await locator.fill(text);
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, text] = row;
58
- let locator = await world.page.getByLabel(identifier).or(world.page.getByPlaceholder(identifier)).or(world.page.locator(identifier));
59
- let tag = await locator.evaluate(e => e.tagName.toLowerCase());
60
- let type = await locator.getAttribute('type');
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 wait for {string} to be attached/detatched/visible/hidden', async function (world, identifier) {
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 = await world.page.getByText(identifier, { exact: true }).or(world.page.getByLabel(identifier)).or(world.page.locator(identifier));
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
- quickpickle.When('I type the following keys: {}', async function (world, keys) {
97
- let keyPresses = keys.split(' ');
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
- await world.page.screenshot({ path: `${projectRoot}/${world.playwrightConfig.screenshotDir}/${world.info.rule ? world.info.rule + '__' + world.info.scenario : world.info.scenario}__${world.info.line}.png`.replace(/\/\//g, '/') });
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
- await world.page.screenshot({ path: `${projectRoot}/${world.playwrightConfig.screenshotDir}/${name}.png`.replace(/\/\//g, '/') });
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":"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"}
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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"}