@quickpickle/playwright 0.14.1 → 1.1.0

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.
@@ -16,7 +16,7 @@ const defaultPlaywrightWorldConfig = {
16
16
  slowMoTags: ['@slowmo'],
17
17
  headless: true,
18
18
  slowMo: false,
19
- slowMoMs: 500,
19
+ slowMoMs: 100,
20
20
  keyboardDelay: 20,
21
21
  defaultBrowser: 'chromium',
22
22
  browserSizes: {
@@ -25,23 +25,64 @@ const defaultPlaywrightWorldConfig = {
25
25
  desktop: '1920x1080',
26
26
  widescreen: '3440x1440',
27
27
  },
28
- defaultBrowserSize: 'desktop',
29
- stepTimeout: 5000,
28
+ defaultBrowserSize: 'mobile',
29
+ defaultTimeout: 1000,
30
+ navigationTimeout: 3000,
30
31
  };
31
32
  class PlaywrightWorld extends quickpickle.VisualWorld {
32
33
  constructor(context, info) {
33
34
  super(context, info);
35
+ this.identities = new Map();
36
+ this._identity = 'default';
34
37
  this.setConfig(info.config.worldConfig);
38
+ // Handle deprecated stepTimeout and timeout
39
+ if (info.config.worldConfig.stepTimeout && !info.config.worldConfig.defaultTimeout) {
40
+ info.config.worldConfig.defaultTimeout = info.config.worldConfig.stepTimeout;
41
+ }
35
42
  }
36
43
  async init() {
37
44
  await super.init();
38
45
  await this.startBrowser();
39
- this.browserContext = await this.browser.newContext({
46
+ await this.newIdentity('default');
47
+ await this.setViewportSize();
48
+ }
49
+ get browserContext() {
50
+ return this.identities.get(this.identity).context;
51
+ }
52
+ get page() {
53
+ return this.identities.get(this.identity).page;
54
+ }
55
+ get identity() {
56
+ return this._identity;
57
+ }
58
+ set identity(name) {
59
+ if (this.identities.has(name))
60
+ this._identity = name;
61
+ else
62
+ throw new Error(`There is no browser for "${name}"; please call \`await world.setIdentity('${name}')\` instead.`);
63
+ }
64
+ async newIdentity(name) {
65
+ let context = await this.browser.newContext({
40
66
  serviceWorkers: 'block',
41
67
  javaScriptEnabled: this.tagsMatch(this.worldConfig.nojsTags) ? false : true,
42
68
  });
43
- this.page = await this.browserContext.newPage();
44
- await this.setViewportSize();
69
+ // Set default timeouts on the context
70
+ context.setDefaultTimeout(this.worldConfig.actionTimeout || this.worldConfig.defaultTimeout);
71
+ context.setDefaultNavigationTimeout(this.worldConfig.navigationTimeout || this.worldConfig.defaultTimeout);
72
+ let page = await context.newPage();
73
+ if (name !== 'default') {
74
+ let url = this.identities.get('default').page.url();
75
+ await page.goto(url);
76
+ }
77
+ this.identities.set(name, {
78
+ context,
79
+ page
80
+ });
81
+ }
82
+ async setIdentity(name) {
83
+ if (!this.identities.has(name))
84
+ await this.newIdentity(name);
85
+ this._identity = name;
45
86
  }
46
87
  get browserName() {
47
88
  return this.info.tags.find(t => t.match(/^@(?:chromium|firefox|webkit)$/))?.replace(/^@/, '') ?? this.worldConfig.defaultBrowser ?? 'chromium';
@@ -67,6 +108,10 @@ class PlaywrightWorld extends quickpickle.VisualWorld {
67
108
  newConfig.slowMoMs = newConfig.slowMo;
68
109
  newConfig.slowMo = newConfig.slowMoMs > 0;
69
110
  }
111
+ // Migrate deprecated timeout properties to defaultTimeout
112
+ if (newConfig.stepTimeout && !newConfig.defaultTimeout) {
113
+ newConfig.defaultTimeout = newConfig.stepTimeout;
114
+ }
70
115
  this.info.config.worldConfig = newConfig;
71
116
  }
72
117
  async setViewportSize(size) {
@@ -94,18 +139,17 @@ class PlaywrightWorld extends quickpickle.VisualWorld {
94
139
  }
95
140
  async reset(conf) {
96
141
  let url = this.page.url() || this.baseUrl.toString();
97
- await this.page?.close();
98
- await this.browserContext?.close();
99
- if (conf) {
100
- await this.browser.close();
101
- await this.setConfig(conf);
102
- await this.startBrowser();
142
+ for (let identity of this.identities.keys()) {
143
+ await this.identities.get(identity).context.close();
103
144
  }
104
- this.browserContext = await this.browser.newContext({
105
- serviceWorkers: 'block'
106
- });
107
- this.page = await this.browserContext.newPage();
108
- await this.page.goto(url, { timeout: this.worldConfig.stepTimeout });
145
+ await this.browser.close();
146
+ if (conf)
147
+ await this.setConfig(conf);
148
+ await this.startBrowser();
149
+ this.identities = new Map();
150
+ await this.newIdentity('default');
151
+ this.identity = 'default';
152
+ await this.page.goto(url);
109
153
  }
110
154
  async close() {
111
155
  await this.browser.close();
@@ -134,6 +178,8 @@ class PlaywrightWorld extends quickpickle.VisualWorld {
134
178
  */
135
179
  getLocator(el, identifier, role, text = null) {
136
180
  let locator;
181
+ if (!quickpickle.isAriaRoleExtended(role))
182
+ throw new Error(`Invalid ARIA role: ${role}`);
137
183
  if (role === 'element')
138
184
  locator = el.locator(identifier);
139
185
  else if (role === 'input')
@@ -156,22 +202,22 @@ class PlaywrightWorld extends quickpickle.VisualWorld {
156
202
  * @returns Promise<void>
157
203
  */
158
204
  async setValue(locator, value) {
159
- let { tag, type, role } = await locator.evaluate((el) => ({ tag: el.tagName.toLowerCase(), type: el.getAttribute('type')?.toLowerCase(), role: el.getAttribute('role')?.toLowerCase() }), undefined, { timeout: this.worldConfig.stepTimeout });
205
+ let { tag, type, role } = await locator.evaluate((el) => ({ tag: el.tagName.toLowerCase(), type: el.getAttribute('type')?.toLowerCase(), role: el.getAttribute('role')?.toLowerCase() }), undefined, { timeout: this.worldConfig.actionTimeout || this.worldConfig.defaultTimeout });
160
206
  if (!tag)
161
207
  throw new Error(`Could not find element with locator: ${locator.toString()}`);
162
208
  if (tag === 'select') {
163
209
  let values = value.split(/\s*(?<!\\),\s*/).map((v) => v.replace(/\\,/g, ','));
164
- await locator.selectOption(values, { timeout: this.worldConfig.stepTimeout });
210
+ await locator.selectOption(values);
165
211
  }
166
212
  else if (type === 'checkbox' || type === 'radio' || role === 'checkbox') {
167
213
  let check = !(['false', 'no', 'unchecked', '', 'null', 'undefined', '0'].includes(value.toString().toLowerCase()));
168
214
  if (check)
169
- await locator.check({ timeout: this.worldConfig.stepTimeout });
215
+ await locator.check();
170
216
  else
171
- await locator.uncheck({ timeout: this.worldConfig.stepTimeout });
217
+ await locator.uncheck();
172
218
  }
173
219
  else {
174
- await locator.fill(value, { timeout: this.worldConfig.stepTimeout });
220
+ await locator.fill(value);
175
221
  }
176
222
  }
177
223
  /**
@@ -232,9 +278,9 @@ class PlaywrightWorld extends quickpickle.VisualWorld {
232
278
  let visibleText = toBeVisible ? 'true' : '';
233
279
  try {
234
280
  if (toBePresent)
235
- await test.expect(locator.locator(`visible=${visibleText}`).first()).toBeAttached({ timeout: this.worldConfig.stepTimeout });
281
+ await test.expect(locator.locator(`visible=${visibleText}`).first()).toBeAttached();
236
282
  else
237
- await test.expect(locator.locator(`visible=${visibleText}`)).toHaveCount(0, { timeout: this.worldConfig.stepTimeout });
283
+ await test.expect(locator.locator(`visible=${visibleText}`)).toHaveCount(0);
238
284
  }
239
285
  catch (e) {
240
286
  throw new Error(`The${toBeVisible ? '' : ' hidden'} element "${locator}" was unexpectedly ${toBePresent ? 'not present' : 'present'}.`);
@@ -336,7 +382,10 @@ function getDimensions(size) {
336
382
  }
337
383
  quickpickle.After({
338
384
  f: async (world) => {
339
- await world.browserContext.close();
385
+ for (let identity of world.identities.keys()) {
386
+ await world.identities.get(identity).context.close();
387
+ }
388
+ await world.browser.close();
340
389
  },
341
390
  weight: 99,
342
391
  });
@@ -1 +1 @@
1
- {"version":3,"file":"PlaywrightWorld.cjs","sources":["../src/PlaywrightWorld.ts"],"sourcesContent":[null],"names":["chromium","firefox","webkit","VisualWorld","normalizeTags","expect","fs","After"],"mappings":"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"}
1
+ {"version":3,"file":"PlaywrightWorld.cjs","sources":["../src/PlaywrightWorld.ts"],"sourcesContent":[null],"names":["chromium","firefox","webkit","VisualWorld","normalizeTags","isAriaRoleExtended","expect","fs","After"],"mappings":"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"}
@@ -5,21 +5,97 @@ import { InfoConstructor } from 'quickpickle/dist/world';
5
5
  import { Buffer } from 'buffer';
6
6
  import { ScreenshotSetting } from './snapshotMatcher';
7
7
  export type PlaywrightWorldConfigSetting = Partial<{
8
+ /**
9
+ * The host to connect to.
10
+ * @default http://localhost
11
+ */
8
12
  host: string;
13
+ /**
14
+ * The port to connect to.
15
+ * @default undefined
16
+ */
9
17
  port: number;
18
+ /**
19
+ * The directory in which to save screenshots.
20
+ * @default "screenshots"
21
+ */
10
22
  screenshotDir: string;
23
+ /**
24
+ * Options for the default screenshot comparisons.
25
+ * @default undefined
26
+ */
11
27
  screenshotOptions?: ScreenshotSetting;
28
+ /**
29
+ * Tags for scenarios to run without javascript.
30
+ * @default ["@nojs","@noscript"]
31
+ */
12
32
  nojsTags: string | string[];
33
+ /**
34
+ * Tags for scenarios to run with browser visible.
35
+ * @default ["@browser","@show-browser","@showbrowser"]
36
+ */
13
37
  showBrowserTags: string | string[];
38
+ /**
39
+ * Tags for scenarios to be run with slow motion enabled.
40
+ * @default ["@slowmo"]
41
+ */
14
42
  slowMoTags: string | string[];
43
+ /**
44
+ * Whether to run the browser in headless mode.
45
+ * @default true
46
+ */
15
47
  headless: boolean;
48
+ /**
49
+ * Whether to run the browser with slow motion enabled.
50
+ * @default false
51
+ */
16
52
  slowMo: boolean | number;
53
+ /**
54
+ * The number of milliseconds to slow down the browser by.
55
+ * @default 500
56
+ */
17
57
  slowMoMs: number;
58
+ /**
59
+ * The number of milliseconds between key presses.
60
+ * @default 20
61
+ */
18
62
  keyboardDelay: number;
63
+ /**
64
+ * The default browser to use.
65
+ * @default "chromium"
66
+ */
19
67
  defaultBrowser: 'chromium' | 'firefox' | 'webkit';
68
+ /**
69
+ * The default browser sizes to use, in the form "widthxheight".
70
+ * @default {mobile:"480x640",tablet:"1024x768",desktop:"1920x1080",widescreen:"3440x1440"}
71
+ */
20
72
  browserSizes: Record<string, string>;
73
+ /**
74
+ * The default browser size to use.
75
+ * @default "desktop"
76
+ */
21
77
  defaultBrowserSize: string;
78
+ /**
79
+ * @deprecated alias for defaultTimeout.
80
+ */
22
81
  stepTimeout: number;
82
+ /**
83
+ * The default timeout in milliseconds for all methods that accept a timeout option.
84
+ * This should always be lower than the QuickPickle stepTimeout, or After functions may fail to run.
85
+ * @default 1000
86
+ */
87
+ defaultTimeout: number;
88
+ /**
89
+ * The default timeout in milliseconds for actions like click, fill, etc.
90
+ * If 0 or not set, uses defaultTimeout.
91
+ */
92
+ actionTimeout: number;
93
+ /**
94
+ * The default timeout in milliseconds for navigation actions like goto, reload, etc.
95
+ * If 0 or not set, uses defaultTimeout.
96
+ * @default 3000
97
+ */
98
+ navigationTimeout: number;
23
99
  }>;
24
100
  export declare const defaultPlaywrightWorldConfig: {
25
101
  host: string;
@@ -39,18 +115,29 @@ export declare const defaultPlaywrightWorldConfig: {
39
115
  widescreen: string;
40
116
  };
41
117
  defaultBrowserSize: string;
42
- stepTimeout: number;
118
+ defaultTimeout: number;
119
+ navigationTimeout: number;
43
120
  };
44
121
  export type PlaywrightWorldConfig = typeof defaultPlaywrightWorldConfig & {
45
122
  port?: number;
46
123
  browserSizes: Record<string, string>;
47
124
  };
125
+ export type BrowserMap = {
126
+ context: BrowserContext;
127
+ page: Page;
128
+ };
48
129
  export declare class PlaywrightWorld extends VisualWorld implements VisualWorldInterface {
49
130
  browser: Browser;
50
- browserContext: BrowserContext;
51
- page: Page;
131
+ identities: Map<string, BrowserMap>;
132
+ _identity: string;
52
133
  constructor(context: TestContext, info: InfoConstructor);
53
134
  init(): Promise<void>;
135
+ get browserContext(): BrowserContext;
136
+ get page(): Page;
137
+ get identity(): string;
138
+ set identity(name: string);
139
+ newIdentity(name: string): Promise<void>;
140
+ setIdentity(name: string): Promise<void>;
54
141
  get browserName(): "chromium" | "firefox" | "webkit";
55
142
  get browserSize(): {
56
143
  width: number;
@@ -78,7 +165,7 @@ export declare class PlaywrightWorld extends VisualWorld implements VisualWorldI
78
165
  * @param text Optional text to match inside the locator
79
166
  * @returns Promise<void>
80
167
  */
81
- getLocator(el: Locator | Page, identifier: string, role: AriaRoleExtended, text?: string | null): Locator;
168
+ getLocator(el: Locator | Page, identifier: string, role: AriaRoleExtended | string, text?: string | null): Locator;
82
169
  /**
83
170
  * Sets a value on a form element based on its type (select, checkbox/radio, or other input)
84
171
  * @example setValue(locator, "Option 1, Option 2") => Selects multiple options in a select element
@@ -1,5 +1,5 @@
1
1
  import { webkit, firefox, chromium } from 'playwright';
2
- import { After, VisualWorld, normalizeTags } from 'quickpickle';
2
+ import { After, VisualWorld, normalizeTags, isAriaRoleExtended } from 'quickpickle';
3
3
  import { defaultsDeep, cloneDeep } from 'lodash-es';
4
4
  import { promises } from 'node:fs';
5
5
  import { expect } from '@playwright/test';
@@ -13,7 +13,7 @@ const defaultPlaywrightWorldConfig = {
13
13
  slowMoTags: ['@slowmo'],
14
14
  headless: true,
15
15
  slowMo: false,
16
- slowMoMs: 500,
16
+ slowMoMs: 100,
17
17
  keyboardDelay: 20,
18
18
  defaultBrowser: 'chromium',
19
19
  browserSizes: {
@@ -22,23 +22,64 @@ const defaultPlaywrightWorldConfig = {
22
22
  desktop: '1920x1080',
23
23
  widescreen: '3440x1440',
24
24
  },
25
- defaultBrowserSize: 'desktop',
26
- stepTimeout: 5000,
25
+ defaultBrowserSize: 'mobile',
26
+ defaultTimeout: 1000,
27
+ navigationTimeout: 3000,
27
28
  };
28
29
  class PlaywrightWorld extends VisualWorld {
29
30
  constructor(context, info) {
30
31
  super(context, info);
32
+ this.identities = new Map();
33
+ this._identity = 'default';
31
34
  this.setConfig(info.config.worldConfig);
35
+ // Handle deprecated stepTimeout and timeout
36
+ if (info.config.worldConfig.stepTimeout && !info.config.worldConfig.defaultTimeout) {
37
+ info.config.worldConfig.defaultTimeout = info.config.worldConfig.stepTimeout;
38
+ }
32
39
  }
33
40
  async init() {
34
41
  await super.init();
35
42
  await this.startBrowser();
36
- this.browserContext = await this.browser.newContext({
43
+ await this.newIdentity('default');
44
+ await this.setViewportSize();
45
+ }
46
+ get browserContext() {
47
+ return this.identities.get(this.identity).context;
48
+ }
49
+ get page() {
50
+ return this.identities.get(this.identity).page;
51
+ }
52
+ get identity() {
53
+ return this._identity;
54
+ }
55
+ set identity(name) {
56
+ if (this.identities.has(name))
57
+ this._identity = name;
58
+ else
59
+ throw new Error(`There is no browser for "${name}"; please call \`await world.setIdentity('${name}')\` instead.`);
60
+ }
61
+ async newIdentity(name) {
62
+ let context = await this.browser.newContext({
37
63
  serviceWorkers: 'block',
38
64
  javaScriptEnabled: this.tagsMatch(this.worldConfig.nojsTags) ? false : true,
39
65
  });
40
- this.page = await this.browserContext.newPage();
41
- await this.setViewportSize();
66
+ // Set default timeouts on the context
67
+ context.setDefaultTimeout(this.worldConfig.actionTimeout || this.worldConfig.defaultTimeout);
68
+ context.setDefaultNavigationTimeout(this.worldConfig.navigationTimeout || this.worldConfig.defaultTimeout);
69
+ let page = await context.newPage();
70
+ if (name !== 'default') {
71
+ let url = this.identities.get('default').page.url();
72
+ await page.goto(url);
73
+ }
74
+ this.identities.set(name, {
75
+ context,
76
+ page
77
+ });
78
+ }
79
+ async setIdentity(name) {
80
+ if (!this.identities.has(name))
81
+ await this.newIdentity(name);
82
+ this._identity = name;
42
83
  }
43
84
  get browserName() {
44
85
  return this.info.tags.find(t => t.match(/^@(?:chromium|firefox|webkit)$/))?.replace(/^@/, '') ?? this.worldConfig.defaultBrowser ?? 'chromium';
@@ -64,6 +105,10 @@ class PlaywrightWorld extends VisualWorld {
64
105
  newConfig.slowMoMs = newConfig.slowMo;
65
106
  newConfig.slowMo = newConfig.slowMoMs > 0;
66
107
  }
108
+ // Migrate deprecated timeout properties to defaultTimeout
109
+ if (newConfig.stepTimeout && !newConfig.defaultTimeout) {
110
+ newConfig.defaultTimeout = newConfig.stepTimeout;
111
+ }
67
112
  this.info.config.worldConfig = newConfig;
68
113
  }
69
114
  async setViewportSize(size) {
@@ -91,18 +136,17 @@ class PlaywrightWorld extends VisualWorld {
91
136
  }
92
137
  async reset(conf) {
93
138
  let url = this.page.url() || this.baseUrl.toString();
94
- await this.page?.close();
95
- await this.browserContext?.close();
96
- if (conf) {
97
- await this.browser.close();
98
- await this.setConfig(conf);
99
- await this.startBrowser();
139
+ for (let identity of this.identities.keys()) {
140
+ await this.identities.get(identity).context.close();
100
141
  }
101
- this.browserContext = await this.browser.newContext({
102
- serviceWorkers: 'block'
103
- });
104
- this.page = await this.browserContext.newPage();
105
- await this.page.goto(url, { timeout: this.worldConfig.stepTimeout });
142
+ await this.browser.close();
143
+ if (conf)
144
+ await this.setConfig(conf);
145
+ await this.startBrowser();
146
+ this.identities = new Map();
147
+ await this.newIdentity('default');
148
+ this.identity = 'default';
149
+ await this.page.goto(url);
106
150
  }
107
151
  async close() {
108
152
  await this.browser.close();
@@ -131,6 +175,8 @@ class PlaywrightWorld extends VisualWorld {
131
175
  */
132
176
  getLocator(el, identifier, role, text = null) {
133
177
  let locator;
178
+ if (!isAriaRoleExtended(role))
179
+ throw new Error(`Invalid ARIA role: ${role}`);
134
180
  if (role === 'element')
135
181
  locator = el.locator(identifier);
136
182
  else if (role === 'input')
@@ -153,22 +199,22 @@ class PlaywrightWorld extends VisualWorld {
153
199
  * @returns Promise<void>
154
200
  */
155
201
  async setValue(locator, value) {
156
- let { tag, type, role } = await locator.evaluate((el) => ({ tag: el.tagName.toLowerCase(), type: el.getAttribute('type')?.toLowerCase(), role: el.getAttribute('role')?.toLowerCase() }), undefined, { timeout: this.worldConfig.stepTimeout });
202
+ let { tag, type, role } = await locator.evaluate((el) => ({ tag: el.tagName.toLowerCase(), type: el.getAttribute('type')?.toLowerCase(), role: el.getAttribute('role')?.toLowerCase() }), undefined, { timeout: this.worldConfig.actionTimeout || this.worldConfig.defaultTimeout });
157
203
  if (!tag)
158
204
  throw new Error(`Could not find element with locator: ${locator.toString()}`);
159
205
  if (tag === 'select') {
160
206
  let values = value.split(/\s*(?<!\\),\s*/).map((v) => v.replace(/\\,/g, ','));
161
- await locator.selectOption(values, { timeout: this.worldConfig.stepTimeout });
207
+ await locator.selectOption(values);
162
208
  }
163
209
  else if (type === 'checkbox' || type === 'radio' || role === 'checkbox') {
164
210
  let check = !(['false', 'no', 'unchecked', '', 'null', 'undefined', '0'].includes(value.toString().toLowerCase()));
165
211
  if (check)
166
- await locator.check({ timeout: this.worldConfig.stepTimeout });
212
+ await locator.check();
167
213
  else
168
- await locator.uncheck({ timeout: this.worldConfig.stepTimeout });
214
+ await locator.uncheck();
169
215
  }
170
216
  else {
171
- await locator.fill(value, { timeout: this.worldConfig.stepTimeout });
217
+ await locator.fill(value);
172
218
  }
173
219
  }
174
220
  /**
@@ -229,9 +275,9 @@ class PlaywrightWorld extends VisualWorld {
229
275
  let visibleText = toBeVisible ? 'true' : '';
230
276
  try {
231
277
  if (toBePresent)
232
- await expect(locator.locator(`visible=${visibleText}`).first()).toBeAttached({ timeout: this.worldConfig.stepTimeout });
278
+ await expect(locator.locator(`visible=${visibleText}`).first()).toBeAttached();
233
279
  else
234
- await expect(locator.locator(`visible=${visibleText}`)).toHaveCount(0, { timeout: this.worldConfig.stepTimeout });
280
+ await expect(locator.locator(`visible=${visibleText}`)).toHaveCount(0);
235
281
  }
236
282
  catch (e) {
237
283
  throw new Error(`The${toBeVisible ? '' : ' hidden'} element "${locator}" was unexpectedly ${toBePresent ? 'not present' : 'present'}.`);
@@ -333,7 +379,10 @@ function getDimensions(size) {
333
379
  }
334
380
  After({
335
381
  f: async (world) => {
336
- await world.browserContext.close();
382
+ for (let identity of world.identities.keys()) {
383
+ await world.identities.get(identity).context.close();
384
+ }
385
+ await world.browser.close();
337
386
  },
338
387
  weight: 99,
339
388
  });