@quickpickle/playwright 0.10.6 → 0.11.1

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.
@@ -1,7 +1,6 @@
1
1
  import { Then } from 'quickpickle';
2
2
  import { expect } from '@playwright/test';
3
3
  import './snapshotMatcher.mjs';
4
- import { getLocator, testMetatag, defaultScreenshotPath } from './helpers.mjs';
5
4
  import 'pngjs';
6
5
  import 'node:fs';
7
6
  import 'node:path';
@@ -10,199 +9,130 @@ import 'lodash-es';
10
9
 
11
10
  // ================
12
11
  // Text on page
13
- async function assertVisibleText(page, text, visible = true) {
14
- try {
15
- if (visible)
16
- await expect(await page.getByText(text).locator(`visible=true`).count()).toBeGreaterThan(0);
17
- else
18
- await expect(await page.getByText(text).locator(`visible=true`).count()).toBe(0);
19
- }
20
- catch (e) {
21
- throw new Error(`The text "${text}" was unexpectedly ${visible ? 'not found' : 'found'} on the page.`);
22
- }
23
- }
24
12
  Then('I should see {string}( on the page)', async function (world, text) {
25
- await assertVisibleText(world.page, text);
13
+ await world.expectText(world.page, text);
26
14
  });
27
15
  Then('I should not/NOT see {string}( on the page)', async function (world, text) {
28
- await assertVisibleText(world.page, text, false);
16
+ await world.expectText(world.page, text, false);
29
17
  });
30
18
  Then('the text {string} should be visible( on the page)', async function (world, text) {
31
- await assertVisibleText(world.page, text);
19
+ await world.expectText(world.page, text);
32
20
  });
33
21
  Then('the text {string} should not/NOT be visible( on the page)', async function (world, text) {
34
- await assertVisibleText(world.page, text, false);
22
+ await world.expectText(world.page, text, false);
35
23
  });
36
24
  // ================
37
25
  // Elements on page
38
- async function assertVisibleElement(locator, visible = true) {
39
- try {
40
- if (visible)
41
- await expect(await locator.locator('visible=true').count()).toBeGreaterThan(0);
42
- else
43
- await expect(await locator.locator('visible=true').count()).toBe(0);
44
- }
45
- catch (e) {
46
- throw new Error(`The element "${locator}" was unexpectedly ${visible ? 'not visible' : 'visible'} on the page.`);
47
- }
48
- }
49
26
  Then('I should see a/an/the {string} {word}', async function (world, identifier, role) {
50
- let locator = await getLocator(world.page, identifier, role);
51
- await assertVisibleElement(locator);
27
+ let locator = await world.getLocator(world.page, identifier, role);
28
+ await world.expectElement(locator);
52
29
  });
53
30
  Then('I should not/NOT see a/an/the {string} {word}', async function (world, identifier, role) {
54
- let locator = await getLocator(world.page, identifier, role);
55
- await assertVisibleElement(locator, false);
31
+ let locator = await world.getLocator(world.page, identifier, role);
32
+ await world.expectElement(locator, false);
56
33
  });
57
34
  Then('I should see a/an/the {string} (element )with (the )(text ){string}', async function (world, identifier, text) {
58
- let locator = await getLocator(world.page, identifier, 'element', text);
59
- await assertVisibleElement(locator);
35
+ let locator = await world.getLocator(world.page, identifier, 'element', text);
36
+ await world.expectElement(locator);
60
37
  });
61
38
  Then('I should not/NOT see a/an/the {string} (element )with (the )(text ){string}', async function (world, identifier, text) {
62
- let locator = await getLocator(world.page, identifier, 'element', text);
63
- await assertVisibleElement(locator, false);
39
+ let locator = await world.getLocator(world.page, identifier, 'element', text);
40
+ await world.expectElement(locator, false);
64
41
  });
65
42
  // ================
66
43
  // Element state
67
- // visible / hidden
68
- async function assertInvisibleElement(locator, identifier) {
69
- if (await locator.count() === 0)
70
- throw new Error(`The element "${identifier}" was unexpectedly not found on the page.`);
71
- try {
72
- await expect(locator).not.toBeVisible();
73
- }
74
- catch (e) {
75
- throw new Error(`The element "${identifier}" was unexpectedly visible on the page.`);
76
- }
77
- }
78
- Then('a/an/the {string} should be visible', async function (world, identifier) {
79
- let locator = await getLocator(world.page, identifier, 'element');
80
- await expect(locator).toBeVisible();
81
- });
82
- Then('a/an/the {string} should be hidden/invisible', async function (world, identifier) {
83
- let locator = await getLocator(world.page, identifier, 'element');
84
- await assertInvisibleElement(locator, identifier);
85
- });
86
- Then('a/an/the {string} {word} should be visible', async function (world, identifier, role) {
87
- let locator = await getLocator(world.page, identifier, role);
88
- await expect(locator).toBeVisible();
89
- });
90
- Then('a/an/the {string} {word} should be hidden/invisible', async function (world, identifier, role) {
91
- let locator = await getLocator(world.page, identifier, role);
92
- await assertInvisibleElement(locator, identifier);
93
- });
94
- Then('a/an/the {string} (element )with (the )(text ){string} should be visible', async function (world, identifier, text) {
95
- let locator = await getLocator(world.page, identifier, 'element', text);
96
- await expect(locator).toBeVisible();
97
- });
98
- Then('a/an/the {string} (element )with (the )(text ){string} should be hidden/invisible', async function (world, identifier, text) {
99
- let locator = await getLocator(world.page, identifier, 'element', text);
100
- await assertInvisibleElement(locator, identifier);
44
+ Then('a/an/the {string} {word} should be visible/hidden/invisible', async function (world, identifier, role) {
45
+ let state = world.info.step?.match(/(\w+)$/)[0];
46
+ let locator = world.getLocator(world.page, identifier, role);
47
+ await world.expectElement(locator, true, state === 'visible');
48
+ });
49
+ Then('a/an/the {string} (element )with (the )(text ){string} should be visible/hidden/invisible', async function (world, identifier, text) {
50
+ let state = world.info.step?.match(/(\w+)$/)[0];
51
+ let locator = world.getLocator(world.page, identifier, 'element', text);
52
+ await world.expectElement(locator, true, state === 'visible');
53
+ });
54
+ Then('a/an/the {string} {word} should be attached/detatched', async function (world, identifier, role) {
55
+ let state = world.info.step?.match(/(\w)$/)[0];
56
+ let locator = world.getLocator(world.page, identifier, role);
57
+ await locator.waitFor({ state, timeout: world.worldConfig.stepTimeout });
58
+ });
59
+ Then('a/an/the {string} (element )with (the )(text ){string} should be attached/detatched', async function (world, identifier, text) {
60
+ let state = world.info.step?.match(/(\w)$/)[0];
61
+ let locator = world.getLocator(world.page, identifier, 'element', text);
62
+ await locator.waitFor({ state, timeout: world.worldConfig.stepTimeout });
101
63
  });
102
64
  // disabled / enabled
103
- Then('a/an/the {string} should be disabled', async function (world, identifier) {
104
- let locator = await getLocator(world.page, identifier, 'element');
105
- await expect(locator).toBeDisabled();
106
- });
107
- Then('a/an/the {string} should be enabled', async function (world, identifier) {
108
- let locator = await getLocator(world.page, identifier, 'element');
109
- await expect(locator).toBeEnabled();
110
- });
111
65
  Then('a/an/the {string} {word} should be disabled', async function (world, identifier, role) {
112
- let locator = await getLocator(world.page, identifier, role);
66
+ let locator = await world.getLocator(world.page, identifier, role);
113
67
  await expect(locator).toBeDisabled();
114
68
  });
115
69
  Then('a/an/the {string} {word} should be enabled', async function (world, identifier, role) {
116
- let locator = await getLocator(world.page, identifier, role);
70
+ let locator = await world.getLocator(world.page, identifier, role);
117
71
  await expect(locator).toBeEnabled();
118
72
  });
119
73
  Then('a/an/the {string} (element )with (the )(text ){string} should be disabled', async function (world, identifier, text) {
120
- let locator = await getLocator(world.page, identifier, 'element', text);
74
+ let locator = await world.getLocator(world.page, identifier, 'element', text);
121
75
  await expect(locator).toBeDisabled();
122
76
  });
123
77
  Then('a/an/the {string} (element )with (the )(text ){string} should be enabled', async function (world, identifier, text) {
124
- let locator = await getLocator(world.page, identifier, 'element', text);
78
+ let locator = await world.getLocator(world.page, identifier, 'element', text);
125
79
  await expect(locator).toBeEnabled();
126
80
  });
127
81
  // checked / unchecked
128
- Then('a/an/the {string} should be checked', async function (world, identifier) {
129
- let locator = await getLocator(world.page, identifier, 'element');
130
- await expect(locator).toBeChecked();
131
- });
132
- Then('a/an/the {string} should be unchecked', async function (world, identifier) {
133
- let locator = await getLocator(world.page, identifier, 'element');
134
- await expect(locator).not.toBeChecked();
135
- });
136
82
  Then('a/an/the {string} {word} should be checked', async function (world, identifier, role) {
137
- let locator = await getLocator(world.page, identifier, role);
83
+ let locator = await world.getLocator(world.page, identifier, role);
138
84
  await expect(locator).toBeChecked();
139
85
  });
140
86
  Then('a/an/the {string} {word} should be unchecked', async function (world, identifier, role) {
141
- let locator = await getLocator(world.page, identifier, role);
87
+ let locator = await world.getLocator(world.page, identifier, role);
142
88
  await expect(locator).not.toBeChecked();
143
89
  });
144
90
  Then('a/an/the {string} (element )with (the )(text ){string} should be checked', async function (world, identifier, text) {
145
- let locator = await getLocator(world.page, identifier, 'element', text);
91
+ let locator = await world.getLocator(world.page, identifier, 'element', text);
146
92
  await expect(locator).toBeChecked();
147
93
  });
148
94
  Then('a/an/the {string} (element )with (the )(text ){string} should be unchecked', async function (world, identifier, text) {
149
- let locator = await getLocator(world.page, identifier, 'element', text);
95
+ let locator = await world.getLocator(world.page, identifier, 'element', text);
150
96
  await expect(locator).not.toBeChecked();
151
97
  });
152
98
  // focused / unfocused
153
- Then('a/an/the {string} should be focused/active', async function (world, identifier) {
154
- let locator = await getLocator(world.page, identifier, 'element');
155
- await expect(locator).toBeFocused();
156
- });
157
- Then('a/an/the {string} should be unfocused/blurred', async function (world, identifier) {
158
- let locator = await getLocator(world.page, identifier, 'element');
159
- await expect(locator).not.toBeFocused();
160
- });
161
99
  Then('a/an/the {string} {word} should be focused/active', async function (world, identifier, role) {
162
- let locator = await getLocator(world.page, identifier, role);
100
+ let locator = await world.getLocator(world.page, identifier, role);
163
101
  await expect(locator).toBeFocused();
164
102
  });
165
103
  Then('a/an/the {string} {word} should be unfocused/blurred', async function (world, identifier, role) {
166
- let locator = await getLocator(world.page, identifier, role);
104
+ let locator = await world.getLocator(world.page, identifier, role);
167
105
  await expect(locator).not.toBeFocused();
168
106
  });
169
- Then('a/an/the {string} (element )with (the )(text ){string} should be focused', async function (world, identifier, text) {
170
- let locator = await getLocator(world.page, identifier, 'element', text);
107
+ Then('a/an/the {string} (element )with (the )(text ){string} should be focused/active', async function (world, identifier, text) {
108
+ let locator = await world.getLocator(world.page, identifier, 'element', text);
171
109
  await expect(locator).toBeFocused();
172
110
  });
173
111
  Then('a/an/the {string} (element )with (the )(text ){string} should be unfocused/blurred', async function (world, identifier, text) {
174
- let locator = await getLocator(world.page, identifier, 'element', text);
112
+ let locator = await world.getLocator(world.page, identifier, 'element', text);
175
113
  await expect(locator).not.toBeFocused();
176
114
  });
177
115
  // in viewport / out of viewport
178
- Then('a/an/the {string} should be in(side) (of )the viewport', async function (world, identifier) {
179
- let locator = await getLocator(world.page, identifier, 'element');
180
- await expect(locator).toBeInViewport();
181
- });
182
- Then('a/an/the {string} should be out(side) (of )the viewport', async function (world, identifier) {
183
- let locator = await getLocator(world.page, identifier, 'element');
184
- await expect(locator).not.toBeInViewport();
185
- });
186
116
  Then('a/an/the {string} {word} should be in(side) (of )the viewport', async function (world, identifier, role) {
187
- let locator = await getLocator(world.page, identifier, role);
117
+ let locator = await world.getLocator(world.page, identifier, role);
188
118
  await expect(locator).toBeInViewport();
189
119
  });
190
120
  Then('a/an/the {string} {word} should be out(side) (of )the viewport', async function (world, identifier, role) {
191
- let locator = await getLocator(world.page, identifier, role);
121
+ let locator = await world.getLocator(world.page, identifier, role);
192
122
  await expect(locator).not.toBeInViewport();
193
123
  });
194
124
  Then('a/an/the {string} (element )with (the )(text ){string} should be in(side) (of )the viewport', async function (world, identifier, text) {
195
- let locator = await getLocator(world.page, identifier, 'element', text);
125
+ let locator = await world.getLocator(world.page, identifier, 'element', text);
196
126
  await expect(locator).toBeInViewport();
197
127
  });
198
128
  Then('a/an/the {string} (element )with (the )(text ){string} should be out(side) (of )the viewport', async function (world, identifier, text) {
199
- let locator = await getLocator(world.page, identifier, 'element', text);
129
+ let locator = await world.getLocator(world.page, identifier, 'element', text);
200
130
  await expect(locator).not.toBeInViewport();
201
131
  });
202
132
  // Values
203
133
  Then('a/an/the (value of ){string} should contain/include/be/equal {string}', async function (world, identifier, expected) {
204
134
  let exact = world.info.step?.match(/ should (?:be|equal) ['"]/) ? true : false;
205
- let locator = await getLocator(world.page, identifier, 'input');
135
+ let locator = await world.getLocator(world.page, identifier, 'input');
206
136
  if (exact)
207
137
  await expect(locator).toHaveValue(expected);
208
138
  else {
@@ -213,9 +143,9 @@ Then('a/an/the (value of ){string} should contain/include/be/equal {string}', as
213
143
  Then('a/an/the (value of )(the ){string} {word} should contain/include/be/equal {string}', async function (world, identifier, role, expected) {
214
144
  let exact = world.info.step?.match(/ should (?:be|equal) ['"]/) ? true : false;
215
145
  if (role === 'metatag')
216
- await testMetatag(world.page, identifier, expected, exact);
146
+ await world.expectMetatag(world.page, identifier, expected, exact);
217
147
  else {
218
- let locator = await getLocator(world.page, identifier, role);
148
+ let locator = await world.getLocator(world.page, identifier, role);
219
149
  if (exact)
220
150
  await expect(locator).toHaveValue(expected);
221
151
  else {
@@ -226,7 +156,7 @@ Then('a/an/the (value of )(the ){string} {word} should contain/include/be/equal
226
156
  });
227
157
  Then('a/an/the (value of )(the ){string} should not/NOT contain/include/be/equal {string}', async function (world, identifier, expected) {
228
158
  let exact = world.info.step?.match(/ should (?:not|NOT) (?:be|equal) ['"]/) ? true : false;
229
- let locator = await getLocator(world.page, identifier, 'input');
159
+ let locator = await world.getLocator(world.page, identifier, 'input');
230
160
  if (exact)
231
161
  await expect(locator).not.toHaveValue(expected);
232
162
  else {
@@ -237,9 +167,9 @@ Then('a/an/the (value of )(the ){string} should not/NOT contain/include/be/equal
237
167
  Then('a/an/the (value of )(the ){string} {word} should not/NOT contain/include/be/equal {string}', async function (world, identifier, role, expected) {
238
168
  let exact = world.info.step?.match(/ should (?:not|NOT) (?:be|equal) ['"]/) ? true : false;
239
169
  if (role === 'metatag')
240
- await testMetatag(world.page, identifier, expected, exact, false);
170
+ await world.expectMetatag(world.page, identifier, expected, exact, false);
241
171
  else {
242
- let locator = await getLocator(world.page, identifier, role);
172
+ let locator = await world.getLocator(world.page, identifier, role);
243
173
  if (exact)
244
174
  await expect(locator).not.toHaveValue(expected);
245
175
  else {
@@ -251,34 +181,42 @@ Then('a/an/the (value of )(the ){string} {word} should not/NOT contain/include/b
251
181
  // Metatags
252
182
  Then('the meta( )tag {string} should contain/include/be/equal {string}', async function (world, name, expected) {
253
183
  let exact = world.info.step?.match(/ should (?:be|equal) ['"]/) ? true : false;
254
- await testMetatag(world.page, name, expected, exact);
184
+ await world.expectMetatag(world.page, name, expected, exact);
255
185
  });
256
186
  Then('the meta( )tag {string} should not/NOT contain/include/be/equal {string}', async function (world, name, expected) {
257
187
  let exact = world.info.step?.match(/ should (?:not|NOT) (?:be|equal) ['"]/) ? true : false;
258
- await testMetatag(world.page, name, expected, exact, false);
188
+ await world.expectMetatag(world.page, name, expected, exact, false);
259
189
  });
260
190
  // Visual regression testing
261
191
  Then('(the )screenshot should match', async function (world) {
262
- await expect(world.page).toMatchScreenshot(defaultScreenshotPath(world));
192
+ await expect(world.page).toMatchScreenshot(world.screenshotPath, world.worldConfig.screenshotOptions);
263
193
  });
264
194
  Then('(the )screenshot {string} should match', async function (world, name) {
265
195
  let explodedTags = world.info.explodedIdx ? `_(${world.info.tags.join(',')})` : '';
266
- await expect(world.page).toMatchScreenshot(`${world.worldConfig.screenshotDir}/${name}${explodedTags}.png`);
196
+ await expect(world.page).toMatchScreenshot(`${world.screenshotDir}/${name}${explodedTags}.png`, world.worldConfig.screenshotOptions);
267
197
  });
268
198
  Then('(the )screenshot of the {string} {word} should match', async function (world, identifier, role) {
269
- let locator = await getLocator(world.page, identifier, role);
270
- await expect(locator).toMatchScreenshot(defaultScreenshotPath(world));
199
+ let locator = await world.getLocator(world.page, identifier, role);
200
+ await expect(locator).toMatchScreenshot(world.screenshotPath, world.worldConfig.screenshotOptions);
271
201
  });
272
202
  Then('(the )screenshot {string} of the {string} {word} should match', async function (world, name, identifier, role) {
273
- let locator = await getLocator(world.page, identifier, role);
203
+ let locator = await world.getLocator(world.page, identifier, role);
274
204
  let explodedTags = world.info.explodedIdx ? `_(${world.info.tags.join(',')})` : '';
275
- await expect(locator).toMatchScreenshot(`${world.worldConfig.screenshotDir}/${name}${explodedTags}.png`);
205
+ await expect(locator).toMatchScreenshot(`${world.screenshotDir}/${name}${explodedTags}.png`, world.worldConfig.screenshotOptions);
276
206
  });
277
207
  // Browser context
278
208
  Then('the user agent should contain/be {string}', async function (world, ua) {
279
- await expect(world.browser.browserType().name()).toContain(ua);
209
+ let exact = world.info.step?.match(/ should (?:be|equal) ['"]/) ? true : false;
210
+ if (exact)
211
+ await expect(world.browser.browserType().name()).toBe(ua);
212
+ else
213
+ await expect(world.browser.browserType().name()).toContain(ua);
280
214
  });
281
- Then('the url should contain {string}', async function (world, url) {
282
- await expect(world.page.url()).toContain(url);
215
+ Then('the url should contain/include/be/equal {string}', async function (world, url) {
216
+ let exact = world.info.step?.match(/ should (?:be|equal) ['"]/) ? true : false;
217
+ if (exact)
218
+ await expect(world.page.url()).toBe(url);
219
+ else
220
+ await expect(world.page.url()).toContain(url);
283
221
  });
284
222
  //# sourceMappingURL=outcomes.steps.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"outcomes.steps.mjs","sources":["../src/outcomes.steps.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"outcomes.steps.mjs","sources":["../src/outcomes.steps.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -7,14 +7,14 @@ var path = require('node:path');
7
7
  var pixelmatch = require('pixelmatch');
8
8
  var lodashEs = require('lodash-es');
9
9
 
10
- const defaultOptions = {
10
+ const defaultScreenshotOptions = {
11
11
  // Options for the comparison
12
12
  maxDiffPercentage: 0,
13
13
  // Options for the screenshot
14
14
  fullPage: true,
15
15
  omitBackground: false,
16
16
  mask: [],
17
- maskColor: 'rgb(255,255,255)',
17
+ maskColor: '#555555',
18
18
  timeout: 5000,
19
19
  // Options for pixelmatch
20
20
  threshold: 0.1,
@@ -32,7 +32,7 @@ async function compareImages(actual, expected, opts) {
32
32
  return { pass, diffPercentage, image: diffImage };
33
33
  }
34
34
  async function customToHaveScreenshot(pageOrLocator, snapshotPath, opts) {
35
- const options = lodashEs.defaultsDeep(opts, defaultOptions);
35
+ const options = lodashEs.defaultsDeep(opts, defaultScreenshotOptions);
36
36
  const pathparts = snapshotPath.split('/');
37
37
  const name = pathparts.pop();
38
38
  const screenshotDir = pathparts.join('/');
@@ -82,7 +82,14 @@ test.expect.extend({
82
82
  async toMatchScreenshot(received, nameOrOptions, optOptions) {
83
83
  const name = typeof nameOrOptions === 'string' ? nameOrOptions : 'screenshot';
84
84
  const options = typeof nameOrOptions === 'object' ? nameOrOptions : optOptions;
85
+ if (options?.mask) {
86
+ options.mask = options.mask.map((stringOrLocator) => {
87
+ return typeof stringOrLocator !== 'string' ? stringOrLocator : received.locator(stringOrLocator);
88
+ });
89
+ }
85
90
  return customToHaveScreenshot.call(this, received, name, options);
86
91
  },
87
92
  });
93
+
94
+ exports.defaultScreenshotOptions = defaultScreenshotOptions;
88
95
  //# sourceMappingURL=snapshotMatcher.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"snapshotMatcher.cjs","sources":["../src/snapshotMatcher.ts"],"sourcesContent":[null],"names":["PNG","defaultsDeep","fs","playwrightExpect"],"mappings":"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"}
1
+ {"version":3,"file":"snapshotMatcher.cjs","sources":["../src/snapshotMatcher.ts"],"sourcesContent":[null],"names":["PNG","defaultsDeep","fs","playwrightExpect"],"mappings":"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"}
@@ -9,11 +9,35 @@ export interface ToHaveScreenshotOptions extends PixelmatchOptions {
9
9
  height: number;
10
10
  };
11
11
  fullPage?: boolean;
12
- mask?: Array<Locator>;
12
+ mask?: Array<Locator | string>;
13
13
  maskColor?: string;
14
14
  omitBackground?: boolean;
15
15
  timeout?: number;
16
16
  }
17
+ export interface ScreenshotSetting extends PixelmatchOptions {
18
+ maxDiffPercentage?: number;
19
+ clip?: {
20
+ x?: number;
21
+ y?: number;
22
+ width?: number;
23
+ height?: number;
24
+ };
25
+ fullPage?: boolean;
26
+ mask?: string[];
27
+ maskColor?: string;
28
+ omitBackground?: boolean;
29
+ timeout?: number;
30
+ }
31
+ export declare const defaultScreenshotOptions: {
32
+ maxDiffPercentage: number;
33
+ fullPage: boolean;
34
+ omitBackground: boolean;
35
+ mask: never[];
36
+ maskColor: string;
37
+ timeout: number;
38
+ threshold: number;
39
+ alpha: number;
40
+ };
17
41
  declare global {
18
42
  namespace PlaywrightTest {
19
43
  interface Matchers<R> {
@@ -5,14 +5,14 @@ import path from 'node:path';
5
5
  import pixelmatch from 'pixelmatch';
6
6
  import { defaultsDeep } from 'lodash-es';
7
7
 
8
- const defaultOptions = {
8
+ const defaultScreenshotOptions = {
9
9
  // Options for the comparison
10
10
  maxDiffPercentage: 0,
11
11
  // Options for the screenshot
12
12
  fullPage: true,
13
13
  omitBackground: false,
14
14
  mask: [],
15
- maskColor: 'rgb(255,255,255)',
15
+ maskColor: '#555555',
16
16
  timeout: 5000,
17
17
  // Options for pixelmatch
18
18
  threshold: 0.1,
@@ -30,7 +30,7 @@ async function compareImages(actual, expected, opts) {
30
30
  return { pass, diffPercentage, image: diffImage };
31
31
  }
32
32
  async function customToHaveScreenshot(pageOrLocator, snapshotPath, opts) {
33
- const options = defaultsDeep(opts, defaultOptions);
33
+ const options = defaultsDeep(opts, defaultScreenshotOptions);
34
34
  const pathparts = snapshotPath.split('/');
35
35
  const name = pathparts.pop();
36
36
  const screenshotDir = pathparts.join('/');
@@ -80,7 +80,14 @@ expect.extend({
80
80
  async toMatchScreenshot(received, nameOrOptions, optOptions) {
81
81
  const name = typeof nameOrOptions === 'string' ? nameOrOptions : 'screenshot';
82
82
  const options = typeof nameOrOptions === 'object' ? nameOrOptions : optOptions;
83
+ if (options?.mask) {
84
+ options.mask = options.mask.map((stringOrLocator) => {
85
+ return typeof stringOrLocator !== 'string' ? stringOrLocator : received.locator(stringOrLocator);
86
+ });
87
+ }
83
88
  return customToHaveScreenshot.call(this, received, name, options);
84
89
  },
85
90
  });
91
+
92
+ export { defaultScreenshotOptions };
86
93
  //# sourceMappingURL=snapshotMatcher.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"snapshotMatcher.mjs","sources":["../src/snapshotMatcher.ts"],"sourcesContent":[null],"names":["fs","playwrightExpect"],"mappings":"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"}
1
+ {"version":3,"file":"snapshotMatcher.mjs","sources":["../src/snapshotMatcher.ts"],"sourcesContent":[null],"names":["fs","playwrightExpect"],"mappings":"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"}
package/dist/world.cjs CHANGED
@@ -4,6 +4,9 @@ var quickpickle = require('quickpickle');
4
4
  var PlaywrightWorld = require('./PlaywrightWorld.cjs');
5
5
  require('playwright');
6
6
  require('lodash-es');
7
+ require('node:path');
8
+ require('node:url');
9
+ require('playwright/test');
7
10
 
8
11
  quickpickle.setWorldConstructor(PlaywrightWorld.PlaywrightWorld);
9
12
  //# sourceMappingURL=world.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"world.cjs","sources":["../src/world.ts"],"sourcesContent":[null],"names":["setWorldConstructor","PlaywrightWorld"],"mappings":";;;;;;;AAGAA,+BAAmB,CAACC,+BAAe,CAAC;;"}
1
+ {"version":3,"file":"world.cjs","sources":["../src/world.ts"],"sourcesContent":[null],"names":["setWorldConstructor","PlaywrightWorld"],"mappings":";;;;;;;;;;AAGAA,+BAAmB,CAACC,+BAAe,CAAC;;"}
package/dist/world.mjs CHANGED
@@ -2,6 +2,9 @@ import { setWorldConstructor } from 'quickpickle';
2
2
  import { PlaywrightWorld } from './PlaywrightWorld.mjs';
3
3
  import 'playwright';
4
4
  import 'lodash-es';
5
+ import 'node:path';
6
+ import 'node:url';
7
+ import 'playwright/test';
5
8
 
6
9
  setWorldConstructor(PlaywrightWorld);
7
10
  //# sourceMappingURL=world.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"world.mjs","sources":["../src/world.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;AAGA,mBAAmB,CAAC,eAAe,CAAC"}
1
+ {"version":3,"file":"world.mjs","sources":["../src/world.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;AAGA,mBAAmB,CAAC,eAAe,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@quickpickle/playwright",
3
- "version": "0.10.6",
3
+ "version": "0.11.1",
4
4
  "description": "Support files for running tests with Playwright using QuickPickle (Gherkin in Vitest).",
5
5
  "keywords": [
6
6
  "BDD",
@@ -66,7 +66,7 @@
66
66
  "playwright": "^1.49.0",
67
67
  "pngjs": "^7.0.0",
68
68
  "vite": "^5.4.11",
69
- "quickpickle": "^1.6.0"
69
+ "quickpickle": "^1.6.1"
70
70
  },
71
71
  "devDependencies": {
72
72
  "@rollup/plugin-replace": "^6.0.1",