flexysnap 0.1.2-alpha.2 → 0.1.2-alpha.3
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/package.json +1 -3
- package/src/cli.js +0 -0
- package/src/index.js +2 -0
- package/src/testUtils.js +35 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "flexysnap",
|
|
3
|
-
"version": "0.1.2-alpha.
|
|
3
|
+
"version": "0.1.2-alpha.3",
|
|
4
4
|
"description": "Flexible visual snapshot testing for Playwright, built for e-commerce.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"playwright",
|
|
@@ -45,8 +45,6 @@
|
|
|
45
45
|
"dependencies": {
|
|
46
46
|
"@playwright/test": "^1.61.1",
|
|
47
47
|
"canvas": "^3.2.3",
|
|
48
|
-
"glob": "^13.0.6",
|
|
49
|
-
"playwright": "^1.61.1",
|
|
50
48
|
"sharp": "^0.35.3"
|
|
51
49
|
},
|
|
52
50
|
"devDependencies": {
|
package/src/cli.js
CHANGED
|
File without changes
|
package/src/index.js
CHANGED
package/src/testUtils.js
CHANGED
|
@@ -140,6 +140,25 @@ async function rehover(page) {
|
|
|
140
140
|
}
|
|
141
141
|
}
|
|
142
142
|
|
|
143
|
+
async function scrollToTopOfElement(page, target, offset = 0) {
|
|
144
|
+
const locator = typeof target === 'string' ? page.locator(target) : target;
|
|
145
|
+
await locator.waitFor({ state: 'attached' });
|
|
146
|
+
|
|
147
|
+
const targetScrollY = await locator.evaluate((element, scrollOffset) => {
|
|
148
|
+
const rect = element.getBoundingClientRect();
|
|
149
|
+
return rect.top + window.scrollY - scrollOffset;
|
|
150
|
+
}, offset);
|
|
151
|
+
|
|
152
|
+
const maxScrollY = await page.evaluate(() => document.body.scrollHeight - window.innerHeight);
|
|
153
|
+
const finalScrollY = Math.max(0, Math.min(targetScrollY, maxScrollY));
|
|
154
|
+
|
|
155
|
+
await page.evaluate((scrollY) => window.scrollTo(0, scrollY), finalScrollY);
|
|
156
|
+
await page.waitForTimeout(500);
|
|
157
|
+
logTimestamp(`Scrolled to position: ${finalScrollY}`);
|
|
158
|
+
|
|
159
|
+
return finalScrollY;
|
|
160
|
+
}
|
|
161
|
+
|
|
143
162
|
async function fill(page, field, value) {
|
|
144
163
|
let locator;
|
|
145
164
|
if (typeof field === 'string') {
|
|
@@ -153,13 +172,29 @@ async function fill(page, field, value) {
|
|
|
153
172
|
|
|
154
173
|
}
|
|
155
174
|
|
|
175
|
+
async function selectOption(page, field, value) {
|
|
176
|
+
let locator;
|
|
177
|
+
if (typeof field === 'string') {
|
|
178
|
+
const selector = `select[name="${field}"]`;
|
|
179
|
+
locator = page.locator(selector);
|
|
180
|
+
} else {
|
|
181
|
+
locator = field;
|
|
182
|
+
}
|
|
183
|
+
await click(page, locator);
|
|
184
|
+
await locator.selectOption({ label: value });
|
|
185
|
+
logTimestamp('selecting ' + value + ' on ' + locator);
|
|
186
|
+
await page.waitForTimeout(500);
|
|
187
|
+
}
|
|
188
|
+
|
|
156
189
|
export {
|
|
157
190
|
waitForCompleteLoad,
|
|
158
191
|
highlightedClick,
|
|
159
192
|
click,
|
|
160
193
|
hover,
|
|
161
194
|
fill,
|
|
195
|
+
selectOption,
|
|
162
196
|
rehover,
|
|
197
|
+
scrollToTopOfElement,
|
|
163
198
|
setClosePopups,
|
|
164
199
|
logTimestamp,
|
|
165
200
|
setBaseUrl
|