vasu-playwright-utils 1.24.0 → 1.24.2
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 +3 -2
- package/agents/playwright-test-generator.md +9 -8
- package/agents/playwright-test-healer.md +1 -1
- package/agents/playwright-test-planner.md +1 -0
- package/bin/setup.js +21 -9
- package/cursor-rules/project.mdc +1 -1
- package/dist/src/vasu-playwright-lib/utils/action-utils.d.ts.map +1 -1
- package/dist/src/vasu-playwright-lib/utils/action-utils.js +3 -3
- package/dist/src/vasu-playwright-lib/utils/action-utils.js.map +1 -1
- package/dist/src/vasu-playwright-lib/utils/api-utils.d.ts.map +1 -1
- package/dist/src/vasu-playwright-lib/utils/api-utils.js.map +1 -1
- package/dist/src/vasu-playwright-lib/utils/assert-utils.js +1 -1
- package/dist/src/vasu-playwright-lib/utils/assert-utils.js.map +1 -1
- package/dist/src/vasu-playwright-lib/utils/element-utils.d.ts.map +1 -1
- package/dist/src/vasu-playwright-lib/utils/element-utils.js +2 -2
- package/dist/src/vasu-playwright-lib/utils/element-utils.js.map +1 -1
- package/dist/src/vasu-playwright-lib/utils/locator-utils.js +1 -1
- package/dist/src/vasu-playwright-lib/utils/locator-utils.js.map +1 -1
- package/dist/src/vasu-playwright-lib/utils/page-utils.d.ts.map +1 -1
- package/dist/src/vasu-playwright-lib/utils/page-utils.js +1 -1
- package/dist/src/vasu-playwright-lib/utils/page-utils.js.map +1 -1
- package/eslint.config.base.mjs +14 -0
- package/package.json +10 -5
- package/skills/vasu-playwright-utils/references/assertions.md +98 -106
- package/skills/vasu-playwright-utils/references/locators.md +46 -32
- package/src/vasu-playwright-lib/utils/action-utils.ts +4 -4
- package/src/vasu-playwright-lib/utils/api-utils.ts +1 -1
- package/src/vasu-playwright-lib/utils/assert-utils.ts +1 -1
- package/src/vasu-playwright-lib/utils/element-utils.ts +2 -2
- package/src/vasu-playwright-lib/utils/locator-utils.ts +2 -2
- package/src/vasu-playwright-lib/utils/page-utils.ts +2 -2
- package/templates/CLAUDE.md +195 -0
package/README.md
CHANGED
|
@@ -93,10 +93,11 @@ This library ships with AI skills and agent workflows for [Claude Code](https://
|
|
|
93
93
|
| **Skills** — API docs, locator strategy, function references | `.claude/skills/vasu-playwright-utils/` | Claude Code, Cursor |
|
|
94
94
|
| **Playwright CLI skills** — browser automation commands | `.claude/skills/playwright-cli/` | Claude Code, Cursor |
|
|
95
95
|
| **Agents** — test planner, generator, healer workflows | `.claude/agents/` | Claude Code |
|
|
96
|
+
| **CLAUDE.md** — project instructions template | `CLAUDE.md` (project root) | Claude Code, Cursor |
|
|
96
97
|
| **Cursor rules** — agent workflow rules with `@file` refs | `.cursor/rules/` | Cursor |
|
|
97
|
-
| **CLAUDE.md loader** — links
|
|
98
|
+
| **CLAUDE.md loader** — links `CLAUDE.md` into Cursor | `.cursor/rules/project.mdc` | Cursor |
|
|
98
99
|
|
|
99
|
-
Files are **copied** (not symlinked) into your project. Both Claude Code and Cursor auto-discover `.claude/skills/`. Claude Code also auto-discovers `.claude/agents/`. Cursor uses `.cursor/rules/` to reference agent files.
|
|
100
|
+
Files are **copied** (not symlinked) into your project. Both Claude Code and Cursor auto-discover `.claude/skills/`. Claude Code also auto-discovers `.claude/agents/`. Cursor uses `.cursor/rules/` to reference agent files. The setup copies a `CLAUDE.md` template to your project root (skipped if one already exists) and creates a Cursor rule that loads it via `@file CLAUDE.md`, so both tools share the same project instructions.
|
|
100
101
|
|
|
101
102
|
### For consumers
|
|
102
103
|
|
|
@@ -92,10 +92,11 @@ For each test you generate:
|
|
|
92
92
|
|
|
93
93
|
## Required Test Structure
|
|
94
94
|
|
|
95
|
+
**Preferred: Use project's page-setup** (automatically calls `setPage(page)` before each test):
|
|
96
|
+
|
|
95
97
|
```typescript
|
|
96
|
-
import { test } from '@
|
|
98
|
+
import { test } from '@pagesetup';
|
|
97
99
|
import {
|
|
98
|
-
setPage,
|
|
99
100
|
gotoURL,
|
|
100
101
|
click,
|
|
101
102
|
clickAndNavigate,
|
|
@@ -123,8 +124,7 @@ import {
|
|
|
123
124
|
} from 'vasu-playwright-utils';
|
|
124
125
|
|
|
125
126
|
test.describe('Test Suite Name', () => {
|
|
126
|
-
test('Test Case Name', async (
|
|
127
|
-
setPage(page);
|
|
127
|
+
test('Test Case Name', async () => {
|
|
128
128
|
// 1. Navigate to the application
|
|
129
129
|
await gotoURL('https://example.com');
|
|
130
130
|
|
|
@@ -141,6 +141,8 @@ test.describe('Test Suite Name', () => {
|
|
|
141
141
|
});
|
|
142
142
|
```
|
|
143
143
|
|
|
144
|
+
**Fallback (standalone, when @pagesetup is not available):** Import `test` from `@playwright/test`, destructure `{ page }`, and call `setPage(page)` manually.
|
|
145
|
+
|
|
144
146
|
<example-generation>
|
|
145
147
|
For following plan:
|
|
146
148
|
|
|
@@ -166,12 +168,11 @@ Following file is generated:
|
|
|
166
168
|
// spec: specs/plan.md
|
|
167
169
|
// seed: tests/seed.spec.ts
|
|
168
170
|
|
|
169
|
-
import { test } from '@
|
|
170
|
-
import {
|
|
171
|
+
import { test } from '@pagesetup';
|
|
172
|
+
import { gotoURL, fill, fillAndEnter, expectElementToBeVisible, getLocatorByPlaceholder } from 'vasu-playwright-utils';
|
|
171
173
|
|
|
172
174
|
test.describe('Adding New Todos', () => {
|
|
173
|
-
test('Add Valid Todo', async (
|
|
174
|
-
setPage(page);
|
|
175
|
+
test('Add Valid Todo', async () => {
|
|
175
176
|
// 1. Click in the "What needs to be done?" input field
|
|
176
177
|
await fill(getLocatorByPlaceholder('What needs to be done?'), 'Buy groceries');
|
|
177
178
|
|
|
@@ -125,7 +125,7 @@ Use standard Playwright CLI for running tests:
|
|
|
125
125
|
- Document your findings and reasoning for each fix
|
|
126
126
|
- Prefer robust, maintainable solutions over quick hacks
|
|
127
127
|
- Use `vasu-playwright-utils` functions for all test code
|
|
128
|
-
- Ensure `setPage(page)`
|
|
128
|
+
- Ensure tests import `test` from `@pagesetup` or `@fixturesetup` (which call `setPage(page)` automatically). If using `@playwright/test` directly, `setPage(page)` must be called manually.
|
|
129
129
|
- If multiple errors exist, fix them one at a time and retest
|
|
130
130
|
- Provide clear explanations of what was broken and how you fixed it
|
|
131
131
|
- Continue until the test runs successfully without any failures or errors
|
|
@@ -82,6 +82,7 @@ You will:
|
|
|
82
82
|
- Include negative testing scenarios
|
|
83
83
|
- Ensure scenarios are independent and can be run in any order
|
|
84
84
|
- Reference `vasu-playwright-utils` functions in step descriptions so tests can be directly implemented
|
|
85
|
+
- Follow the locator strategy priority in `references/locators.md` when noting selectors (prefer data-testid, role, label over CSS/XPath)
|
|
85
86
|
|
|
86
87
|
**Output Format**: Save the complete test plan as a markdown file with clear headings, numbered steps, and
|
|
87
88
|
professional formatting suitable for sharing with development and QA teams.
|
package/bin/setup.js
CHANGED
|
@@ -124,6 +124,27 @@ if (INSTALL_SKILLS) {
|
|
|
124
124
|
path.join(cursorRulesDir, 'vasu-playwright-utils.mdc'),
|
|
125
125
|
path.join(projectRoot, '.cursor', 'rules', 'vasu-playwright-utils.mdc'),
|
|
126
126
|
);
|
|
127
|
+
|
|
128
|
+
// Copy CLAUDE.md template if consumer doesn't have one (or --force)
|
|
129
|
+
const claudeMdSrc = path.join(pkgDir, 'templates', 'CLAUDE.md');
|
|
130
|
+
if (fs.existsSync(claudeMdSrc)) {
|
|
131
|
+
const claudeMdDest = path.join(projectRoot, 'CLAUDE.md');
|
|
132
|
+
console.log(`\n${step++}. Installing CLAUDE.md template:`);
|
|
133
|
+
const rel = path.relative(projectRoot, claudeMdDest);
|
|
134
|
+
if (!FORCE && fs.existsSync(claudeMdDest)) {
|
|
135
|
+
console.log(` [skip] ${rel} (exists, use --force to overwrite)`);
|
|
136
|
+
} else {
|
|
137
|
+
fs.copyFileSync(claudeMdSrc, claudeMdDest);
|
|
138
|
+
console.log(` [copy] ${rel}`);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
// Install CLAUDE.md loader for Cursor (so Cursor reads the same project instructions as Claude Code)
|
|
143
|
+
console.log(`\n${step++}. Linking CLAUDE.md for Cursor:`);
|
|
144
|
+
installCursorRule(
|
|
145
|
+
path.join(cursorRulesDir, 'project.mdc'),
|
|
146
|
+
path.join(projectRoot, '.cursor', 'rules', 'project.mdc'),
|
|
147
|
+
);
|
|
127
148
|
}
|
|
128
149
|
|
|
129
150
|
if (INSTALL_AGENTS) {
|
|
@@ -141,15 +162,6 @@ if (INSTALL_AGENTS) {
|
|
|
141
162
|
);
|
|
142
163
|
}
|
|
143
164
|
|
|
144
|
-
// Install CLAUDE.md loader for Cursor (so Cursor reads the same project instructions as Claude Code)
|
|
145
|
-
if (fs.existsSync(path.join(projectRoot, 'CLAUDE.md'))) {
|
|
146
|
-
console.log(`\n${step++}. Linking CLAUDE.md for Cursor:`);
|
|
147
|
-
installCursorRule(
|
|
148
|
-
path.join(cursorRulesDir, 'project.mdc'),
|
|
149
|
-
path.join(projectRoot, '.cursor', 'rules', 'project.mdc'),
|
|
150
|
-
);
|
|
151
|
-
}
|
|
152
|
-
|
|
153
165
|
// Summary
|
|
154
166
|
console.log('\nDone! Installed to:');
|
|
155
167
|
for (const p of installed) {
|
package/cursor-rules/project.mdc
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action-utils.d.ts","sourceRoot":"","sources":["../../../../src/vasu-playwright-lib/utils/action-utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAa,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"action-utils.d.ts","sourceRoot":"","sources":["../../../../src/vasu-playwright-lib/utils/action-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -33,11 +33,11 @@ const tslib_1 = require("tslib");
|
|
|
33
33
|
* These actions include navigation, interaction with page elements, handling of dialogs, and more.
|
|
34
34
|
*/
|
|
35
35
|
const test_1 = tslib_1.__importDefault(require("@playwright/test"));
|
|
36
|
-
const page_utils_1 = require("./page-utils");
|
|
37
|
-
const timeouts_1 = require("../constants/timeouts");
|
|
38
|
-
const locator_utils_1 = require("./locator-utils");
|
|
39
36
|
const loadstate_1 = require("../constants/loadstate");
|
|
37
|
+
const timeouts_1 = require("../constants/timeouts");
|
|
40
38
|
const element_utils_1 = require("./element-utils");
|
|
39
|
+
const locator_utils_1 = require("./locator-utils");
|
|
40
|
+
const page_utils_1 = require("./page-utils");
|
|
41
41
|
/**
|
|
42
42
|
* 1. Actions: This section contains functions for interacting with elements on a web page.
|
|
43
43
|
* These functions include clicking, filling input fields, typing, clearing input fields, checking and unchecking checkboxes, selecting options in dropdowns, and more.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action-utils.js","sourceRoot":"","sources":["../../../../src/vasu-playwright-lib/utils/action-utils.ts"],"names":[],"mappings":";;AA2DA,sBAGC;AAOD,4CAyBC;AAQD,oBAGC;AAQD,oCAIC;AAQD,gCAIC;AAQD,8CAOC;AAQD,8CAEC;AASD,oDAOC;AAOD,sBAGC;AAOD,sBAGC;AAOD,0BAGC;AAQD,sCAGC;AAQD,wCAOC;AAQD,oCAGC;AAQD,sCAGC;AAeD,kCAqBC;AAQD,oCAkBC;AASD,oCAkBC;AAqBD,sBAGC;AAOD,sBAMC;AAQD,kCAQC;AAOD,kCAGC;AAkBD,oCAcC;AAQD,kCAGC;AAOD,sDAGC;AAcD,8BAGC;AAWD,8BAOC;;AAxeD;;;GAGG;AACH,oEAAiD;AACjD,
|
|
1
|
+
{"version":3,"file":"action-utils.js","sourceRoot":"","sources":["../../../../src/vasu-playwright-lib/utils/action-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-utils.d.ts","sourceRoot":"","sources":["../../../../src/vasu-playwright-lib/utils/api-utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"api-utils.d.ts","sourceRoot":"","sources":["../../../../src/vasu-playwright-lib/utils/api-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAGlE;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,iBAAiB,CAExD;AAED;;;;;GAKG;AACH,wBAAsB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,CAErH;AAED;;;;;GAKG;AACH,wBAAsB,WAAW,CAC/B,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,UAAU,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GACjD,OAAO,CAAC,WAAW,CAAC,CAEtB;AAED;;;;;GAKG;AACH,wBAAsB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,CAErH;AAED;;;;;GAKG;AACH,wBAAsB,aAAa,CACjC,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,UAAU,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,GACnD,OAAO,CAAC,WAAW,CAAC,CAEtB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-utils.js","sourceRoot":"","sources":["../../../../src/vasu-playwright-lib/utils/api-utils.ts"],"names":[],"mappings":";;AAOA,oDAEC;AAQD,gCAEC;AAQD,kCAKC;AAQD,gCAEC;AAQD,sCAKC;;
|
|
1
|
+
{"version":3,"file":"api-utils.js","sourceRoot":"","sources":["../../../../src/vasu-playwright-lib/utils/api-utils.ts"],"names":[],"mappings":";;AAOA,oDAEC;AAQD,gCAEC;AAQD,kCAKC;AAQD,gCAEC;AAQD,sCAKC;;AAtDD,6CAAuC;AAEvC;;;GAGG;AACH,SAAgB,oBAAoB;IAClC,OAAO,IAAA,oBAAO,GAAE,CAAC,OAAO,CAAC;AAC3B,CAAC;AAED;;;;;GAKG;AACH,SAAsB,UAAU,CAAC,GAAW,EAAE,OAAiD;;QAC7F,OAAO,MAAM,oBAAoB,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACxD,CAAC;CAAA;AAED;;;;;GAKG;AACH,SAAsB,WAAW,CAC/B,GAAW,EACX,OAAkD;;QAElD,OAAO,MAAM,oBAAoB,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACzD,CAAC;CAAA;AAED;;;;;GAKG;AACH,SAAsB,UAAU,CAAC,GAAW,EAAE,OAAiD;;QAC7F,OAAO,MAAM,oBAAoB,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACxD,CAAC;CAAA;AAED;;;;;GAKG;AACH,SAAsB,aAAa,CACjC,GAAW,EACX,OAAoD;;QAEpD,OAAO,MAAM,oBAAoB,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAC3D,CAAC;CAAA"}
|
|
@@ -36,9 +36,9 @@ exports.expectAlertToHaveText = expectAlertToHaveText;
|
|
|
36
36
|
exports.expectAlertToMatchText = expectAlertToMatchText;
|
|
37
37
|
const tslib_1 = require("tslib");
|
|
38
38
|
const test_1 = require("@playwright/test");
|
|
39
|
+
const action_utils_1 = require("./action-utils");
|
|
39
40
|
const locator_utils_1 = require("./locator-utils");
|
|
40
41
|
const page_utils_1 = require("./page-utils");
|
|
41
|
-
const action_utils_1 = require("./action-utils");
|
|
42
42
|
/**
|
|
43
43
|
* Returns an Expect object configured with the given soft option.
|
|
44
44
|
* @param {SoftOption} options - The soft option to configure the Expect object with.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assert-utils.js","sourceRoot":"","sources":["../../../../src/vasu-playwright-lib/utils/assert-utils.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAiCH,0DAEC;AAYD,0DAGC;AAOD,4DAGC;AAOD,8DAGC;AAOD,kEAGC;AAOD,wEAGC;AAOD,4DAGC;AAOD,kEAGC;AAOD,8DAGC;AAOD,4DAGC;AAOD,8DAGC;AAQD,0DAOC;AAQD,gEAOC;AAQD,gEAOC;AAQD,sEAOC;AAQD,4DAOC;AAQD,8DAOC;AAOD,kEAGC;AAOD,wEAGC;AASD,oEAQC;AASD,0EAQC;AAQD,4DAOC;AAWD,kDAGC;AAMD,wDAGC;AAQD,sDAGC;AASD,8DAGC;AASD,sDAOC;AASD,wDAOC;;AAvXD,2CAAqE;AAErE,mDAA6C;AAC7C,6CAAoD;
|
|
1
|
+
{"version":3,"file":"assert-utils.js","sourceRoot":"","sources":["../../../../src/vasu-playwright-lib/utils/assert-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"element-utils.d.ts","sourceRoot":"","sources":["../../../../src/vasu-playwright-lib/utils/element-utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAa,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"element-utils.d.ts","sourceRoot":"","sources":["../../../../src/vasu-playwright-lib/utils/element-utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAa,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAGjD,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAItF;;;;GAIG;AAEH;;;;;GAKG;AACH,wBAAsB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAG/F;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAI/G;AAED;;;;;GAKG;AACH,wBAAsB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAGrG;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAGhH;AAED;;;;;;GAMG;AACH,wBAAsB,YAAY,CAChC,KAAK,EAAE,MAAM,GAAG,OAAO,EACvB,aAAa,EAAE,MAAM,EACrB,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC,CAIxB;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CAO5G;AAED;;;GAGG;AAEH;;;;;GAKG;AACH,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,CAW1G;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,CAezG;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,CAexG;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,CASzG;AAED;;;;;GAKG;AACH,wBAAsB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,CAyCjH;AAED;;;;;GAKG;AACH,wBAAsB,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAG/G;AAED;;;;;GAKG;AACH,wBAAsB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAG9G;AAED;;;;;GAKG;AACH,wBAAsB,0BAA0B,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAGhH;AAED;;;;;GAKG;AACH,wBAAsB,+BAA+B,CACnD,KAAK,EAAE,MAAM,GAAG,OAAO,EACvB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAOf;AAED;;;;;GAKG;AACH,wBAAsB,0BAA0B,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAGhH"}
|
|
@@ -24,10 +24,10 @@ exports.waitForFirstElementToBeAttached = waitForFirstElementToBeAttached;
|
|
|
24
24
|
exports.waitForElementToBeDetached = waitForElementToBeDetached;
|
|
25
25
|
const tslib_1 = require("tslib");
|
|
26
26
|
const test_1 = tslib_1.__importDefault(require("@playwright/test"));
|
|
27
|
-
const locator_utils_1 = require("./locator-utils");
|
|
28
27
|
const timeouts_1 = require("../constants/timeouts");
|
|
29
|
-
const page_utils_1 = require("./page-utils");
|
|
30
28
|
const setup_1 = require("../setup");
|
|
29
|
+
const locator_utils_1 = require("./locator-utils");
|
|
30
|
+
const page_utils_1 = require("./page-utils");
|
|
31
31
|
/**
|
|
32
32
|
* 1. Retreiving Data: Use these functions to retrieve text, values, and counts from web elements.
|
|
33
33
|
* These functions can also be used in conditional statements to check the state of web elements.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"element-utils.js","sourceRoot":"","sources":["../../../../src/vasu-playwright-lib/utils/element-utils.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAqBH,0BAGC;AAOD,kCAIC;AAQD,sCAGC;AAQD,8CAGC;AASD,oCAQC;AAQD,0CAOC;AAaD,8CAWC;AAQD,4CAeC;AAQD,0CAeC;AAQD,4CASC;AAQD,4DAyCC;AAQD,8DAGC;AAQD,4DAGC;AAQD,gEAGC;AAQD,0EAUC;AAQD,gEAGC;;AA7RD,oEAAiD;
|
|
1
|
+
{"version":3,"file":"element-utils.js","sourceRoot":"","sources":["../../../../src/vasu-playwright-lib/utils/element-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,9 +16,9 @@ exports.getFrame = getFrame;
|
|
|
16
16
|
exports.getFrameLocator = getFrameLocator;
|
|
17
17
|
exports.getLocatorInFrame = getLocatorInFrame;
|
|
18
18
|
const tslib_1 = require("tslib");
|
|
19
|
-
const page_utils_1 = require("./page-utils");
|
|
20
19
|
const constants_1 = require("../constants");
|
|
21
20
|
const element_utils_1 = require("./element-utils");
|
|
21
|
+
const page_utils_1 = require("./page-utils");
|
|
22
22
|
/**
|
|
23
23
|
* 1. Locators: This section contains functions and definitions related to locators.
|
|
24
24
|
* Locators are used to find and interact with elements on the page.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"locator-utils.js","sourceRoot":"","sources":["../../../../src/vasu-playwright-lib/utils/locator-utils.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AA2BH,gCAGC;AAaD,8CAEC;AAQD,gDAEC;AAQD,4CAEC;AAQD,4CAEC;AAQD,8CAEC;AAQD,0DAEC;AAQD,wCAMC;AAeD,4BAOC;AAOD,0CAEC;AAQD,8CAEC;;AAnJD,
|
|
1
|
+
{"version":3,"file":"locator-utils.js","sourceRoot":"","sources":["../../../../src/vasu-playwright-lib/utils/locator-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page-utils.d.ts","sourceRoot":"","sources":["../../../../src/vasu-playwright-lib/utils/page-utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"page-utils.d.ts","sourceRoot":"","sources":["../../../../src/vasu-playwright-lib/utils/page-utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,QAAQ,EAAU,MAAM,kBAAkB,CAAC;AAG1E,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,iBAAiB,EAElB,MAAM,mCAAmC,CAAC;AAI3C;;;GAGG;AACH,wBAAgB,OAAO,IAAI,IAAI,CAE9B;AAED,wBAAgB,UAAU,IAAI,cAAc,CAE3C;AAED;;;GAGG;AACH,wBAAgB,OAAO,CAAC,YAAY,EAAE,IAAI,GAAG,IAAI,CAEhD;AAED;;;GAGG;AACH,wBAAgB,WAAW,IAAI,IAAI,EAAE,CAEpC;AAED;;;;;GAKG;AACH,wBAAsB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiB3F;AAED;;GAEG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAQzD;AAED;;;;;GAKG;AACH,wBAAsB,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAc9D;AAED;;;GAGG;AAEH;;;;;GAKG;AACH,wBAAsB,OAAO,CAC3B,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,WAAkD,GAC1D,OAAO,CAAC,IAAI,GAAG,QAAQ,CAAC,CAE1B;AAED;;;;GAIG;AACH,wBAAsB,MAAM,CAAC,OAAO,GAAE,iBAAyC,GAAG,OAAO,CAAC,MAAM,CAAC,CAQhG;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAQrF;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAG3E;AAED;;;GAGG;AACH,wBAAsB,MAAM,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAGvE;AAED;;;GAGG;AACH,wBAAsB,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGpD;AAED;;;;GAIG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAOhF;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,CAAC,CAEzG"}
|
|
@@ -22,9 +22,9 @@ exports.wait = wait;
|
|
|
22
22
|
exports.getWindowSize = getWindowSize;
|
|
23
23
|
exports.saveStorageState = saveStorageState;
|
|
24
24
|
const tslib_1 = require("tslib");
|
|
25
|
-
const timeouts_1 = require("../constants/timeouts");
|
|
26
25
|
const test_1 = require("@playwright/test");
|
|
27
26
|
const constants_1 = require("../constants");
|
|
27
|
+
const timeouts_1 = require("../constants/timeouts");
|
|
28
28
|
let page;
|
|
29
29
|
/**
|
|
30
30
|
* Returns the current Page.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page-utils.js","sourceRoot":"","sources":["../../../../src/vasu-playwright-lib/utils/page-utils.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAkBH,0BAEC;AAED,gCAEC;AAMD,0BAEC;AAMD,kCAEC;AAQD,gCAiBC;AAKD,kDAQC;AAQD,8BAcC;AAaD,0BAKC;AAOD,wBAQC;AAMD,oDAQC;AAMD,gCAGC;AAMD,wBAGC;AAMD,oBAGC;AAOD,sCAOC;AAuBD,4CAEC;;AAnND,
|
|
1
|
+
{"version":3,"file":"page-utils.js","sourceRoot":"","sources":["../../../../src/vasu-playwright-lib/utils/page-utils.ts"],"names":[],"mappings":"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"}
|
package/eslint.config.base.mjs
CHANGED
|
@@ -108,6 +108,20 @@ export default [
|
|
|
108
108
|
'import/no-self-import': 'error',
|
|
109
109
|
'import/first': 'error',
|
|
110
110
|
'import/no-mutable-exports': 'error',
|
|
111
|
+
// Declaration order: builtin → external → internal → parent → sibling → index (auto-fix via import/order)
|
|
112
|
+
'import/order': [
|
|
113
|
+
'error',
|
|
114
|
+
{
|
|
115
|
+
groups: ['builtin', 'external', 'internal', 'parent', 'sibling', 'index', 'type'],
|
|
116
|
+
'newlines-between': 'never',
|
|
117
|
+
alphabetize: { order: 'asc', caseInsensitive: true },
|
|
118
|
+
pathGroups: [
|
|
119
|
+
{ pattern: '@/**', group: 'internal', position: 'before' },
|
|
120
|
+
],
|
|
121
|
+
pathGroupsExcludedImportTypes: ['builtin'],
|
|
122
|
+
},
|
|
123
|
+
],
|
|
124
|
+
// Member order within named imports only (e.g. { b, a } → { a, b }); declaration order handled by import/order
|
|
111
125
|
'sort-imports': ['error', { ignoreDeclarationSort: true }],
|
|
112
126
|
|
|
113
127
|
// General Rules - Best Practices
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vasu-playwright-utils",
|
|
3
|
-
"version": "1.24.
|
|
3
|
+
"version": "1.24.2",
|
|
4
4
|
"description": "Playwright Typescript Library with reusable utilities",
|
|
5
5
|
"main": "./dist/src/vasu-playwright-lib/index.js",
|
|
6
6
|
"types": "./dist/src/vasu-playwright-lib/index.d.ts",
|
|
@@ -49,7 +49,8 @@
|
|
|
49
49
|
"skills",
|
|
50
50
|
"agents",
|
|
51
51
|
"cursor-rules",
|
|
52
|
-
"bin"
|
|
52
|
+
"bin",
|
|
53
|
+
"templates"
|
|
53
54
|
],
|
|
54
55
|
"engines": {
|
|
55
56
|
"node": ">=20.0.0"
|
|
@@ -67,7 +68,7 @@
|
|
|
67
68
|
"eslint-import-resolver-typescript": "^4.4.4",
|
|
68
69
|
"eslint-plugin-import": "^2.32.0",
|
|
69
70
|
"eslint-plugin-jsdoc": "^62.8.0",
|
|
70
|
-
"eslint-plugin-playwright": "^2.10.
|
|
71
|
+
"eslint-plugin-playwright": "^2.10.1",
|
|
71
72
|
"eslint-plugin-prettier": "^5.5.5",
|
|
72
73
|
"husky": "^9.1.7",
|
|
73
74
|
"lint-staged": "^16.4.0",
|
|
@@ -80,6 +81,9 @@
|
|
|
80
81
|
"peerDependencies": {
|
|
81
82
|
"@playwright/test": ">=1.58.2"
|
|
82
83
|
},
|
|
84
|
+
"overrides": {
|
|
85
|
+
"playwright": "^1.58.2"
|
|
86
|
+
},
|
|
83
87
|
"scripts": {
|
|
84
88
|
"ncu:check": "npx npm-check-updates --reject \"eslint,@eslint/js\" --dep prod,dev,optional,peer && npx npm-check-updates \"eslint,@eslint/js\" --target minor --deep peer",
|
|
85
89
|
"ncu:update": "npx npm-check-updates --reject \"eslint,@eslint/js\" --dep prod,dev,optional,peer -u && npx npm-check-updates \"eslint,@eslint/js\" --target minor --deep peer -u",
|
|
@@ -117,8 +121,9 @@
|
|
|
117
121
|
"*.{json,md,ts}": [
|
|
118
122
|
"cross-env prettier --write"
|
|
119
123
|
],
|
|
120
|
-
"*.
|
|
121
|
-
"cross-env eslint --fix"
|
|
124
|
+
"*.ts": [
|
|
125
|
+
"cross-env eslint --fix",
|
|
126
|
+
"cross-env eslint"
|
|
122
127
|
]
|
|
123
128
|
}
|
|
124
129
|
}
|
|
@@ -2,143 +2,138 @@
|
|
|
2
2
|
|
|
3
3
|
Source: `src/vasu-playwright-lib/utils/assert-utils.ts`
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## Using Assertions in Spec Files
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
**Do not use assertions in spec files.** Assertions are for building and verifying behaviour inside page objects (e.g. `verify*` methods). Spec files should only orchestrate steps and call those methods so the test reads like a clear, readable scenario.
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
- Support `soft` option for soft assertions that don't stop the test
|
|
11
|
-
- Support `timeout` option to override the default expect timeout
|
|
12
|
-
- Auto-retry until the condition is met or timeout is reached
|
|
9
|
+
### Good Example — Readable Spec (No Assertions in Spec)
|
|
13
10
|
|
|
14
|
-
|
|
11
|
+
The spec reads like a test plan; all assertions live in page files.
|
|
15
12
|
|
|
16
|
-
|
|
13
|
+
**Spec file** — plain English, no assertion utils:
|
|
17
14
|
|
|
18
15
|
```typescript
|
|
19
|
-
|
|
20
|
-
await
|
|
21
|
-
|
|
16
|
+
test('Complete checkout flow', async () => {
|
|
17
|
+
await LoginPage.loginWithValidCredentials();
|
|
18
|
+
await ProductsPage.verifyProductsPageIsDisplayed();
|
|
19
|
+
await ProductsPage.addToCartByProductNumber(1);
|
|
20
|
+
await MiniCart.verifyMiniCartCount('1');
|
|
21
|
+
await CheckoutPage.goToCart();
|
|
22
|
+
await CheckoutPage.clickCheckout();
|
|
23
|
+
await CheckoutPage.fillCheckoutInfo();
|
|
24
|
+
await CheckoutPage.clickContinue();
|
|
25
|
+
await CheckoutPage.clickFinish();
|
|
26
|
+
await CheckoutPage.verifyOrderComplete();
|
|
27
|
+
});
|
|
22
28
|
```
|
|
23
29
|
|
|
24
|
-
|
|
30
|
+
**Page file** — assertions live here with descriptive messages:
|
|
25
31
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
### `expectElementToBeHidden(input, options?: ExpectOptions)`
|
|
31
|
-
|
|
32
|
-
Asserts element is not present in DOM or is hidden.
|
|
33
|
-
|
|
34
|
-
### `expectElementToBeAttached(input, options?: ExpectOptions)`
|
|
35
|
-
|
|
36
|
-
Asserts element is present in DOM (may not be visible).
|
|
32
|
+
```typescript
|
|
33
|
+
// sauce-demo-products-page.ts
|
|
34
|
+
import { expectElementToBeVisible, expectElementToBeHidden } from '@utils/assert-utils';
|
|
35
|
+
import { getLocator } from '@utils/locator-utils';
|
|
37
36
|
|
|
38
|
-
|
|
37
|
+
const productsContainer = () => getLocator('#inventory_container').nth(0);
|
|
39
38
|
|
|
40
|
-
|
|
39
|
+
export async function verifyProductsPageIsDisplayed() {
|
|
40
|
+
await expectElementToBeVisible(productsContainer(), { timeout: 1000, message: 'Logged in user should see Products' });
|
|
41
|
+
}
|
|
41
42
|
|
|
42
|
-
|
|
43
|
+
export async function verifyProductsPageIsNotDisplayed() {
|
|
44
|
+
await expectElementToBeHidden(productsContainer(), 'Products should not be displayed');
|
|
45
|
+
}
|
|
46
|
+
```
|
|
43
47
|
|
|
44
|
-
|
|
48
|
+
```typescript
|
|
49
|
+
// sauce-demo-checkout-page.ts
|
|
50
|
+
import { expectElementToContainText } from '@utils/assert-utils';
|
|
51
|
+
|
|
52
|
+
export async function verifyOrderComplete() {
|
|
53
|
+
await expectElementToContainText(orderCompleteMessage(), /thank you for your order/i, {
|
|
54
|
+
message: 'Checkout complete message should be displayed',
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
```
|
|
45
58
|
|
|
46
|
-
##
|
|
59
|
+
## Overview
|
|
47
60
|
|
|
48
|
-
|
|
61
|
+
All assertion functions:
|
|
49
62
|
|
|
50
|
-
|
|
63
|
+
- Accept `string | Locator` as the `input` parameter
|
|
64
|
+
- Support `soft` option for soft assertions that don't stop the test
|
|
65
|
+
- Support `timeout` option to override the default expect timeout
|
|
66
|
+
- Support `message` option (or a string shorthand) for descriptive failure messages
|
|
67
|
+
- Auto-retry until the condition is met or timeout is reached
|
|
51
68
|
|
|
52
|
-
##
|
|
69
|
+
## Soft Assertions
|
|
53
70
|
|
|
54
|
-
|
|
71
|
+
Pass `{ soft: true }` to any assertion. Call `assertAllSoftAssertions(testInfo)` at the end to fail the test if any soft assertion failed.
|
|
55
72
|
|
|
56
|
-
|
|
73
|
+
```typescript
|
|
74
|
+
await expectElementToBeVisible('#header', { soft: true });
|
|
75
|
+
await expectElementToHaveText('#title', 'Welcome', { soft: true });
|
|
76
|
+
assertAllSoftAssertions(testInfo);
|
|
77
|
+
```
|
|
57
78
|
|
|
58
|
-
|
|
79
|
+
## Element Assertions
|
|
80
|
+
|
|
81
|
+
| Function | Description |
|
|
82
|
+
| ------------------------------------------------- | -------------------------------------- |
|
|
83
|
+
| `expectElementToBeVisible(input, options?)` | Element is in DOM and visible |
|
|
84
|
+
| `expectElementToBeHidden(input, options?)` | Element is not in DOM or hidden |
|
|
85
|
+
| `expectElementToBeAttached(input, options?)` | Element is in DOM (may not be visible) |
|
|
86
|
+
| `expectElementToBeInViewport(input, options?)` | Element is visible in viewport |
|
|
87
|
+
| `expectElementNotToBeInViewport(input, options?)` | Element is not in viewport |
|
|
88
|
+
| `expectElementToBeChecked(input, options?)` | Checkbox/radio is checked |
|
|
89
|
+
| `expectElementNotToBeChecked(input, options?)` | Checkbox/radio is not checked |
|
|
90
|
+
| `expectElementToBeDisabled(input, options?)` | Element is disabled |
|
|
91
|
+
| `expectElementToBeEnabled(input, options?)` | Element is enabled |
|
|
92
|
+
| `expectElementToBeEditable(input, options?)` | Element is editable |
|
|
59
93
|
|
|
60
94
|
## Text Assertions
|
|
61
95
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
### `expectElementNotToHaveText(input, text, options?)`
|
|
96
|
+
| Function | Description |
|
|
97
|
+
| ------------------------------------------------------ | ------------------------------- |
|
|
98
|
+
| `expectElementToHaveText(input, text, options?)` | Text equals value (exact match) |
|
|
99
|
+
| `expectElementNotToHaveText(input, text, options?)` | Text does NOT equal value |
|
|
100
|
+
| `expectElementToContainText(input, text, options?)` | Text contains value (substring) |
|
|
101
|
+
| `expectElementNotToContainText(input, text, options?)` | Text does NOT contain value |
|
|
70
102
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
### `expectElementToContainText(input, text, options?)`
|
|
74
|
-
|
|
75
|
-
Asserts element's text contains the provided value (substring match).
|
|
76
|
-
|
|
77
|
-
### `expectElementNotToContainText(input, text, options?)`
|
|
78
|
-
|
|
79
|
-
Asserts element's text does NOT contain the provided value.
|
|
103
|
+
`text` accepts `string | RegExp | Array<string | RegExp>`. Options extend with `ignoreCase?: boolean` and `useInnerText?: boolean`.
|
|
80
104
|
|
|
81
105
|
## Value Assertions
|
|
82
106
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
Asserts a multi-select has the specified values selected.
|
|
90
|
-
|
|
91
|
-
### `expectElementValueToBeEmpty(input, options?)`
|
|
92
|
-
|
|
93
|
-
Asserts an input/editable element is empty.
|
|
94
|
-
|
|
95
|
-
### `expectElementValueNotToBeEmpty(input, options?)`
|
|
96
|
-
|
|
97
|
-
Asserts an input/editable element is not empty.
|
|
98
|
-
|
|
99
|
-
## Attribute Assertions
|
|
100
|
-
|
|
101
|
-
### `expectElementToHaveAttribute(input, attribute: string, value: string | RegExp, options?)`
|
|
102
|
-
|
|
103
|
-
Asserts element has an attribute with the exact value.
|
|
107
|
+
| Function | Description |
|
|
108
|
+
| --------------------------------------------------- | ----------------------------------- |
|
|
109
|
+
| `expectElementToHaveValue(input, text, options?)` | Input has the specified value |
|
|
110
|
+
| `expectElementToHaveValues(input, texts, options?)` | Multi-select has specified values |
|
|
111
|
+
| `expectElementValueToBeEmpty(input, options?)` | Input/editable element is empty |
|
|
112
|
+
| `expectElementValueNotToBeEmpty(input, options?)` | Input/editable element is not empty |
|
|
104
113
|
|
|
105
|
-
|
|
114
|
+
## Attribute & Count Assertions
|
|
106
115
|
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
Asserts the number of elements matching the selector equals `count`.
|
|
116
|
+
| Function | Description |
|
|
117
|
+
| --------------------------------------------------------------- | ---------------------------------------- |
|
|
118
|
+
| `expectElementToHaveAttribute(input, attr, value, options?)` | Attribute equals value |
|
|
119
|
+
| `expectElementToContainAttribute(input, attr, value, options?)` | Attribute contains value |
|
|
120
|
+
| `expectElementToHaveCount(input, count, options?)` | Number of matching elements equals count |
|
|
114
121
|
|
|
115
122
|
## Page Assertions
|
|
116
123
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
Asserts the current page URL contains the given string.
|
|
124
|
-
|
|
125
|
-
### `expectPageToHaveTitle(titleOrRegExp: string | RegExp, options?)`
|
|
126
|
-
|
|
127
|
-
Asserts the page title matches.
|
|
128
|
-
|
|
129
|
-
### `expectPageSizeToBeEqualTo(numberOfPages: number, options?)`
|
|
130
|
-
|
|
131
|
-
Asserts the number of open pages in the browser context.
|
|
124
|
+
| Function | Description |
|
|
125
|
+
| ------------------------------------------------ | --------------------------------- |
|
|
126
|
+
| `expectPageToHaveURL(urlOrRegExp, options?)` | Page URL matches exactly |
|
|
127
|
+
| `expectPageToContainURL(url, options?)` | Page URL contains string |
|
|
128
|
+
| `expectPageToHaveTitle(titleOrRegExp, options?)` | Page title matches |
|
|
129
|
+
| `expectPageSizeToBeEqualTo(count, options?)` | Number of open pages equals count |
|
|
132
130
|
|
|
133
131
|
## Alert Assertions
|
|
134
132
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
### `expectAlertToMatchText(input, text: string | RegExp, options?)`
|
|
140
|
-
|
|
141
|
-
Clicks element, triggers dialog, asserts dialog message matches `text`.
|
|
133
|
+
| Function | Description |
|
|
134
|
+
| ----------------------------------------------- | -------------------------------------------------- |
|
|
135
|
+
| `expectAlertToHaveText(input, text, options?)` | Clicks element, asserts alert text equals value |
|
|
136
|
+
| `expectAlertToMatchText(input, text, options?)` | Clicks element, asserts alert text matches pattern |
|
|
142
137
|
|
|
143
138
|
## Option Types
|
|
144
139
|
|
|
@@ -148,8 +143,5 @@ type ExpectOptions = TimeoutOption & SoftOption & MessageOrOptions;
|
|
|
148
143
|
// SoftOption = { soft?: boolean }
|
|
149
144
|
// MessageOrOptions = string | { message?: string }
|
|
150
145
|
|
|
151
|
-
type ExpectTextOptions = {
|
|
152
|
-
ignoreCase?: boolean;
|
|
153
|
-
useInnerText?: boolean;
|
|
154
|
-
};
|
|
146
|
+
type ExpectTextOptions = { ignoreCase?: boolean; useInnerText?: boolean };
|
|
155
147
|
```
|
|
@@ -4,7 +4,7 @@ Source: `src/vasu-playwright-lib/utils/locator-utils.ts`
|
|
|
4
4
|
|
|
5
5
|
## Locator Strategy Priority
|
|
6
6
|
|
|
7
|
-
When choosing locators for test code, follow this priority order (best to worst).
|
|
7
|
+
When choosing locators for test code, follow this priority order (best to worst). **Prefer unique CSS or XPath with stable attributes over text-based locators** so that when a check fails you can tell quickly whether the element is missing (bug) or the copy changed (new functionality / locale).
|
|
8
8
|
|
|
9
9
|
### 1. `data-testid` attributes (Best)
|
|
10
10
|
|
|
@@ -23,8 +23,11 @@ Custom data attributes that carry stable, semantic meaning.
|
|
|
23
23
|
// HTML: <div data-product-id="shoes-001">...</div>
|
|
24
24
|
await click('[data-product-id="shoes-001"]');
|
|
25
25
|
|
|
26
|
-
// HTML: <
|
|
27
|
-
|
|
26
|
+
// HTML: <h2 data-test="complete-header">Thank you for your order</h2>
|
|
27
|
+
const orderCompleteMessage = () => getLocator('[data-test="complete-header"]');
|
|
28
|
+
await expectElementToContainText(orderCompleteMessage(), /thank you for your order/i, {
|
|
29
|
+
message: 'Checkout complete message should be displayed',
|
|
30
|
+
});
|
|
28
31
|
```
|
|
29
32
|
|
|
30
33
|
### 3. `id` attributes
|
|
@@ -51,34 +54,9 @@ await fill('[name="email"]', 'user@example.com');
|
|
|
51
54
|
await selectByText('[name="country"]', 'United States');
|
|
52
55
|
```
|
|
53
56
|
|
|
54
|
-
### 5.
|
|
57
|
+
### 5. XPath with unique attributes
|
|
55
58
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
```typescript
|
|
59
|
-
// By ARIA role + accessible name (preferred for interactive elements)
|
|
60
|
-
await click(getLocatorByRole('button', { name: 'Submit' }));
|
|
61
|
-
await fill(getLocatorByRole('textbox', { name: 'Email' }), 'user@example.com');
|
|
62
|
-
await click(getLocatorByRole('link', { name: 'Sign up' }));
|
|
63
|
-
await check(getLocatorByRole('checkbox', { name: 'Remember me' }));
|
|
64
|
-
|
|
65
|
-
// By label text (preferred for form fields)
|
|
66
|
-
await fill(getLocatorByLabel('Email address'), 'user@example.com');
|
|
67
|
-
|
|
68
|
-
// By placeholder text
|
|
69
|
-
await fill(getLocatorByPlaceholder('Search...'), 'playwright');
|
|
70
|
-
|
|
71
|
-
// By visible text content
|
|
72
|
-
await click(getLocatorByText('Add to cart'));
|
|
73
|
-
|
|
74
|
-
// Use regex for partial or case-insensitive matching
|
|
75
|
-
await click(getLocatorByRole('button', { name: /submit/i }));
|
|
76
|
-
await click(getLocatorByText(/view details/i));
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
### 6. XPath with unique attributes
|
|
80
|
-
|
|
81
|
-
Use only when higher-priority strategies are unavailable. Target stable attributes.
|
|
59
|
+
Use when no data-_ or id is available. Target **stable attributes** (e.g. `data-test`, `aria-_`, `type`), not text.
|
|
82
60
|
|
|
83
61
|
```typescript
|
|
84
62
|
// Good: XPath with stable attributes
|
|
@@ -89,9 +67,9 @@ await click('//input[@type="email"]');
|
|
|
89
67
|
await click('//div[@data-section="billing"]//button[@type="submit"]');
|
|
90
68
|
```
|
|
91
69
|
|
|
92
|
-
###
|
|
70
|
+
### 6. CSS with unique attributes
|
|
93
71
|
|
|
94
|
-
|
|
72
|
+
Use stable attribute selectors so the locator does not depend on copy or locale.
|
|
95
73
|
|
|
96
74
|
```typescript
|
|
97
75
|
// Good: attribute-based CSS
|
|
@@ -100,6 +78,42 @@ await fill('input[type="email"]', 'user@example.com');
|
|
|
100
78
|
|
|
101
79
|
// Good: scoped by stable parent
|
|
102
80
|
await click('.billing-section button[type="submit"]');
|
|
81
|
+
|
|
82
|
+
// Good: data-test (e.g. Sauce Demo checkout complete)
|
|
83
|
+
const orderCompleteMessage = () => getLocator('[data-test="complete-header"]');
|
|
84
|
+
await expectElementToContainText(orderCompleteMessage(), /thank you for your order/i);
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### 7. Playwright built-in locators (role / text) — use only when no stable selector exists
|
|
88
|
+
|
|
89
|
+
Text- and role-based locators are **flaky**: they change with copy, locale, and country. If the only way to find an element is by its text, a failure does not tell you whether the element is missing (bug) or the wording changed (new feature / i18n). Prefer **data-testid**, **data-\***, **id**, or **unique CSS/XPath** first.
|
|
90
|
+
|
|
91
|
+
When you must use role or text:
|
|
92
|
+
|
|
93
|
+
```typescript
|
|
94
|
+
// By ARIA role + accessible name
|
|
95
|
+
await click(getLocatorByRole('button', { name: 'Submit' }));
|
|
96
|
+
await fill(getLocatorByRole('textbox', { name: 'Email' }), 'user@example.com');
|
|
97
|
+
|
|
98
|
+
// By label text (form fields)
|
|
99
|
+
await fill(getLocatorByLabel('Email address'), 'user@example.com');
|
|
100
|
+
|
|
101
|
+
// By placeholder text
|
|
102
|
+
await fill(getLocatorByPlaceholder('Search...'), 'playwright');
|
|
103
|
+
|
|
104
|
+
// By visible text — avoid for assertions; use stable selector + assert text separately
|
|
105
|
+
await click(getLocatorByText('Add to cart'));
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
**Assertions:** Prefer a **stable locator** for the element and assert the **text in the assertion**. That way a failure shows "expected text X, got Y" (copy change) vs element not found (bug).
|
|
109
|
+
|
|
110
|
+
```typescript
|
|
111
|
+
// Prefer: stable selector + text in assertion
|
|
112
|
+
const orderCompleteMessage = () => getLocator('[data-test="complete-header"]');
|
|
113
|
+
await expectElementToContainText(orderCompleteMessage(), /thank you for your order/i);
|
|
114
|
+
|
|
115
|
+
// Avoid: locating by text — fails ambiguously if copy or locale changes
|
|
116
|
+
// const orderCompleteMessage = () => getLocatorByRole('heading', { name: /thank you for your order/i });
|
|
103
117
|
```
|
|
104
118
|
|
|
105
119
|
### 8. XPath (structural)
|
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
* These actions include navigation, interaction with page elements, handling of dialogs, and more.
|
|
4
4
|
*/
|
|
5
5
|
import test, { Locator } from '@playwright/test';
|
|
6
|
-
import {
|
|
6
|
+
import { getDefaultLoadState } from '../constants/loadstate';
|
|
7
|
+
import { SMALL_TIMEOUT, STANDARD_TIMEOUT } from '../constants/timeouts';
|
|
7
8
|
import {
|
|
8
9
|
ActionOptions,
|
|
9
10
|
CheckOptions,
|
|
@@ -21,10 +22,9 @@ import {
|
|
|
21
22
|
UploadValues,
|
|
22
23
|
VisibilityOption,
|
|
23
24
|
} from '../types/optional-parameter-types';
|
|
24
|
-
import { SMALL_TIMEOUT, STANDARD_TIMEOUT } from '../constants/timeouts';
|
|
25
|
-
import { getLocator, getVisibleLocator } from './locator-utils';
|
|
26
|
-
import { getDefaultLoadState } from '../constants/loadstate';
|
|
27
25
|
import { waitForElementToBeStable } from './element-utils';
|
|
26
|
+
import { getLocator, getVisibleLocator } from './locator-utils';
|
|
27
|
+
import { getPage } from './page-utils';
|
|
28
28
|
|
|
29
29
|
/**
|
|
30
30
|
* 1. Actions: This section contains functions for interacting with elements on a web page.
|
|
@@ -7,9 +7,9 @@
|
|
|
7
7
|
|
|
8
8
|
import { Expect, Locator, TestInfo, expect } from '@playwright/test';
|
|
9
9
|
import { ExpectOptions, ExpectTextOptions, SoftOption, TimeoutOption } from '../types/optional-parameter-types';
|
|
10
|
+
import { getAlertText } from './action-utils';
|
|
10
11
|
import { getLocator } from './locator-utils';
|
|
11
12
|
import { getAllPages, getPage } from './page-utils';
|
|
12
|
-
import { getAlertText } from './action-utils';
|
|
13
13
|
|
|
14
14
|
/**
|
|
15
15
|
* Returns an Expect object configured with the given soft option.
|
|
@@ -6,11 +6,11 @@
|
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
8
|
import test, { Locator } from '@playwright/test';
|
|
9
|
+
import { SMALL_TIMEOUT } from '../constants/timeouts';
|
|
10
|
+
import { logger } from '../setup';
|
|
9
11
|
import { LocatorWaitOptions, TimeoutOption } from '../types/optional-parameter-types';
|
|
10
12
|
import { getAllLocators, getLocator } from './locator-utils';
|
|
11
|
-
import { SMALL_TIMEOUT } from '../constants/timeouts';
|
|
12
13
|
import { wait } from './page-utils';
|
|
13
|
-
import { logger } from '../setup';
|
|
14
14
|
|
|
15
15
|
/**
|
|
16
16
|
* 1. Retreiving Data: Use these functions to retrieve text, values, and counts from web elements.
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import { Frame, FrameLocator, Locator } from '@playwright/test';
|
|
7
|
-
import {
|
|
7
|
+
import { defaultVisibleOnlyOption } from '../constants';
|
|
8
8
|
import {
|
|
9
9
|
FrameOptions,
|
|
10
10
|
GetByPlaceholderOptions,
|
|
@@ -14,8 +14,8 @@ import {
|
|
|
14
14
|
LocatorOptions,
|
|
15
15
|
LocatorWaitOptions,
|
|
16
16
|
} from '../types/optional-parameter-types';
|
|
17
|
-
import { defaultVisibleOnlyOption } from '../constants';
|
|
18
17
|
import { waitForFirstElementToBeAttached } from './element-utils';
|
|
18
|
+
import { getPage } from './page-utils';
|
|
19
19
|
|
|
20
20
|
/**
|
|
21
21
|
* 1. Locators: This section contains functions and definitions related to locators.
|
|
@@ -5,15 +5,15 @@
|
|
|
5
5
|
* It also includes functions for switching between pages, closing pages, and reverting to the default page.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
import { SMALL_TIMEOUT } from '../constants/timeouts';
|
|
9
8
|
import { BrowserContext, Page, Response, expect } from '@playwright/test';
|
|
9
|
+
import { getDefaultLoadState } from '../constants';
|
|
10
|
+
import { SMALL_TIMEOUT } from '../constants/timeouts';
|
|
10
11
|
import {
|
|
11
12
|
GotoOptions,
|
|
12
13
|
NavigationOptions,
|
|
13
14
|
SwitchPageOptions,
|
|
14
15
|
WaitForLoadStateOptions,
|
|
15
16
|
} from '../types/optional-parameter-types';
|
|
16
|
-
import { getDefaultLoadState } from '../constants';
|
|
17
17
|
|
|
18
18
|
let page: Page;
|
|
19
19
|
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
# Playwright TypeScript Project
|
|
2
|
+
|
|
3
|
+
## Project Overview
|
|
4
|
+
|
|
5
|
+
A Playwright TypeScript end-to-end testing framework for Web (Desktop & Mobile), API, and Electron apps. Built on top of `vasu-playwright-utils` which provides simplified utility functions for actions, assertions, locators, elements, page management, and API requests.
|
|
6
|
+
|
|
7
|
+
**Repository**: `vasu31dev/playwright-ts-template`
|
|
8
|
+
**Default test target**: https://www.saucedemo.com (configurable via `URL` env var or `.env` file)
|
|
9
|
+
**AI Tools**: Claude Code and Cursor (skills and agents shared via `.claude/` and `.cursor/rules/`)
|
|
10
|
+
|
|
11
|
+
## Project Structure
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
playwright-ts-template/
|
|
15
|
+
├── playwright.config.ts # Playwright configuration (projects, timeouts, reporters)
|
|
16
|
+
├── test-setup/
|
|
17
|
+
│ ├── page-setup.ts # Sets page context via setPage() before each test
|
|
18
|
+
│ ├── global-setup.ts # Runs before all tests (initialization hooks)
|
|
19
|
+
│ └── global-teardown.ts # Runs after all tests (cleanup hooks)
|
|
20
|
+
├── tests/
|
|
21
|
+
│ ├── specs/ # Test spec files (*.spec.ts)
|
|
22
|
+
│ ├── pages/ # Page Object classes (class-based POM)
|
|
23
|
+
│ ├── fixtures/
|
|
24
|
+
│ │ └── testFixtures.ts # Custom Playwright fixtures for page objects
|
|
25
|
+
│ ├── testdata/ # Test data files
|
|
26
|
+
│ └── storage-setup/ # Authentication storage state setup
|
|
27
|
+
├── .claude/
|
|
28
|
+
│ ├── skills/
|
|
29
|
+
│ │ ├── vasu-playwright-utils/ # API docs, locator strategy, browser strategy, function references
|
|
30
|
+
│ │ └── playwright-cli/ # Browser automation CLI commands and references
|
|
31
|
+
│ └── agents/ # Agent workflows (planner, generator, healer)
|
|
32
|
+
└── .cursor/rules/ # Cursor rules referencing .claude/ skills and agents via @file
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Key Conventions
|
|
36
|
+
|
|
37
|
+
### Imports and Path Aliases
|
|
38
|
+
|
|
39
|
+
Use TypeScript path aliases defined in `tsconfig.json`:
|
|
40
|
+
|
|
41
|
+
- `@pages/*` -> `tests/pages/*`
|
|
42
|
+
- `@testdata/*` -> `tests/testdata/*`
|
|
43
|
+
- `@fixturesetup` -> `tests/fixtures/testFixtures`
|
|
44
|
+
- `@pagesetup` -> `test-setup/page-setup`
|
|
45
|
+
- `@playwright-config` -> `playwright.config`
|
|
46
|
+
|
|
47
|
+
### Page Setup
|
|
48
|
+
|
|
49
|
+
Always import `test` from `@fixturesetup` instead of `@playwright/test`. This ensures `setPage(page)` is called before each test (required by all `vasu-playwright-utils` functions) and provides page object class instances as fixtures.
|
|
50
|
+
|
|
51
|
+
```typescript
|
|
52
|
+
import { test } from '@fixturesetup';
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
The fixture setup (`tests/fixtures/testFixtures.ts`) extends `@pagesetup` which handles `setPage(page)` automatically, and registers page object classes as Playwright fixtures.
|
|
56
|
+
|
|
57
|
+
### Use vasu-playwright-utils Functions
|
|
58
|
+
|
|
59
|
+
Always prefer `vasu-playwright-utils` utility functions over raw Playwright API calls:
|
|
60
|
+
|
|
61
|
+
```typescript
|
|
62
|
+
// DO: Use utility functions
|
|
63
|
+
import { click, fill, clickAndNavigate, expectElementToBeVisible, gotoURL } from 'vasu-playwright-utils';
|
|
64
|
+
import { getLocatorByRole, getLocatorByText, getLocatorByTestId } from 'vasu-playwright-utils';
|
|
65
|
+
|
|
66
|
+
await gotoURL('https://example.com');
|
|
67
|
+
await fill('#username', 'user');
|
|
68
|
+
await clickAndNavigate(getLocatorByRole('button', { name: 'Login' }));
|
|
69
|
+
await expectElementToBeVisible('.dashboard');
|
|
70
|
+
|
|
71
|
+
// DON'T: Use raw Playwright API
|
|
72
|
+
await page.goto('https://example.com');
|
|
73
|
+
await page.locator('#username').fill('user');
|
|
74
|
+
await page.getByRole('button', { name: 'Login' }).click();
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### Page Object Model (Class-based)
|
|
78
|
+
|
|
79
|
+
All page objects use class-based POM in `tests/pages/`. Classes use `vasu-playwright-utils` functions internally and are registered as Playwright fixtures in `tests/fixtures/testFixtures.ts`.
|
|
80
|
+
|
|
81
|
+
**Locator definitions:**
|
|
82
|
+
|
|
83
|
+
- **Static selectors**: `private readonly userName = '#user-name';`
|
|
84
|
+
- **Dynamic locators** (functions): `private readonly password = () => getLocator('#password').or(getLocatorByPlaceholder('Password'));`
|
|
85
|
+
|
|
86
|
+
**Test usage with fixtures:**
|
|
87
|
+
|
|
88
|
+
```typescript
|
|
89
|
+
import { test } from '@fixturesetup';
|
|
90
|
+
|
|
91
|
+
test('example', async ({ loginPage, productsPage }) => {
|
|
92
|
+
await loginPage.navigateToSauceDemoLoginPage();
|
|
93
|
+
await loginPage.loginWithValidCredentials();
|
|
94
|
+
await productsPage.verifyProductsPageIsDisplayed();
|
|
95
|
+
});
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
When creating new page objects, add them as fixtures in `tests/fixtures/testFixtures.ts`.
|
|
99
|
+
|
|
100
|
+
### Locator Strategy
|
|
101
|
+
|
|
102
|
+
Follow the priority order in `.claude/skills/vasu-playwright-utils/references/locators.md`:
|
|
103
|
+
|
|
104
|
+
1. `data-testid` attributes (best) -> `getLocatorByTestId()`
|
|
105
|
+
2. Other `data-*` / `id` / `name` attributes -> CSS selectors
|
|
106
|
+
3. Playwright built-in locators -> `getLocatorByRole()`, `getLocatorByLabel()`, `getLocatorByPlaceholder()`, `getLocatorByText()`
|
|
107
|
+
4. XPath/CSS with unique attributes (last resort)
|
|
108
|
+
|
|
109
|
+
### Action and Assertion Reference
|
|
110
|
+
|
|
111
|
+
- **Actions**: `.claude/skills/vasu-playwright-utils/references/actions.md` - click, fill, select, check, hover, drag, upload, alerts
|
|
112
|
+
- **Assertions**: `.claude/skills/vasu-playwright-utils/references/assertions.md` - visibility, text, value, attribute, page URL/title, soft assertions
|
|
113
|
+
- **Full API**: `.claude/skills/vasu-playwright-utils/SKILL.md` - complete function signatures and CLI-to-library mapping
|
|
114
|
+
|
|
115
|
+
### Test Patterns
|
|
116
|
+
|
|
117
|
+
- Use `test.describe.configure({ mode: 'parallel' });` for parallel execution within a spec
|
|
118
|
+
- Use `test.beforeEach` for navigation setup
|
|
119
|
+
- Use tags like `@smoke`, `@reg` in describe/test names for filtering
|
|
120
|
+
- Use `clickAndNavigate()` when a click triggers page navigation; `click()` for AJAX/same-page actions
|
|
121
|
+
|
|
122
|
+
## Common Commands
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
# Run all tests
|
|
126
|
+
npm run test
|
|
127
|
+
|
|
128
|
+
# Run in chromium headless
|
|
129
|
+
npm run test:chromium -- <spec-file>
|
|
130
|
+
|
|
131
|
+
# Run in chromium headed (visible browser)
|
|
132
|
+
npm run test:chromium-headed -- <spec-file>
|
|
133
|
+
|
|
134
|
+
# Run specific test by name
|
|
135
|
+
npm run test:chromium-headed -- -g 'test name'
|
|
136
|
+
|
|
137
|
+
# Run smoke tests
|
|
138
|
+
npm run test:smoke
|
|
139
|
+
|
|
140
|
+
# Run with retries and workers
|
|
141
|
+
npm run test:chromium -- <spec-file> -j 3 --retries 2
|
|
142
|
+
|
|
143
|
+
# View HTML report
|
|
144
|
+
npm run report
|
|
145
|
+
|
|
146
|
+
# Lint
|
|
147
|
+
npm run lint
|
|
148
|
+
npm run lint:fix
|
|
149
|
+
|
|
150
|
+
# Format
|
|
151
|
+
npm run format
|
|
152
|
+
|
|
153
|
+
# UI mode
|
|
154
|
+
npm run ui
|
|
155
|
+
|
|
156
|
+
# Record tests with codegen
|
|
157
|
+
npm run record
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
## Configuration
|
|
161
|
+
|
|
162
|
+
- **Playwright config**: `playwright.config.ts` - projects: `setup`, `chromium` (headed), `chromiumheadless`
|
|
163
|
+
- **TypeScript**: `tsconfig.json` - strict mode, ES6 target, CommonJS modules
|
|
164
|
+
- **ESLint**: `eslint.config.js` - extends `vasu-playwright-utils/eslint` shared config (flat config format)
|
|
165
|
+
- **Husky**: Pre-commit hooks for lint-staged (ESLint + Prettier)
|
|
166
|
+
- **Timeouts**: Imported from `vasu-playwright-utils` (`TEST_TIMEOUT`, `EXPECT_TIMEOUT`, `ACTION_TIMEOUT`, `NAVIGATION_TIMEOUT`)
|
|
167
|
+
|
|
168
|
+
## AI Skills and Agents
|
|
169
|
+
|
|
170
|
+
This project includes AI skills and agent workflows in `.claude/` for automated test development. Cursor rules in `.cursor/rules/` reference the same skills and agents via `@file` directives, so both Claude Code and Cursor share the same knowledge base.
|
|
171
|
+
|
|
172
|
+
**Install/update skills and agents**: `npx vasu-pw-setup` (or `--skills` / `--agents` individually, `--force` to update)
|
|
173
|
+
|
|
174
|
+
### Skills (`.claude/skills/`)
|
|
175
|
+
|
|
176
|
+
- **vasu-playwright-utils**: Complete API reference for all utility functions. Use this skill when writing or modifying test code.
|
|
177
|
+
- `references/locators.md` - Locator strategy priority and examples
|
|
178
|
+
- `references/actions.md` - Action functions (click, fill, select, drag, upload, alerts)
|
|
179
|
+
- `references/assertions.md` - Assertion functions (visibility, text, value, attribute, page)
|
|
180
|
+
- `references/browser-strategy.md` - When to use WebFetch vs playwright-cli for optimal token usage (3 tiers: Lite, Snapshot, Full Browser)
|
|
181
|
+
- **playwright-cli**: Browser automation CLI for interactive page exploration, snapshots, form filling, screenshots, and debugging. Use `playwright-cli` commands to explore a page before writing tests.
|
|
182
|
+
|
|
183
|
+
### Agents (`.claude/agents/`)
|
|
184
|
+
|
|
185
|
+
All agents follow the browser strategy in `.claude/skills/vasu-playwright-utils/references/browser-strategy.md` and use `vasu-playwright-utils` functions when writing test code.
|
|
186
|
+
|
|
187
|
+
- **playwright-test-planner**: Explores a web application (WebFetch first, then playwright-cli for interactive discovery) and creates comprehensive test plans in `specs/` directory with steps mapped to vasu-playwright-utils functions.
|
|
188
|
+
- **playwright-test-generator**: Generates Playwright test code from test plans or from a prompt/URL. Uses playwright-cli to capture real selectors, translates to vasu-playwright-utils functions. Generated tests should follow this project's class-based POM and fixture conventions.
|
|
189
|
+
- **playwright-test-healer**: Debugs and fixes failing Playwright tests. Runs tests, analyzes errors, uses playwright-cli for live debugging, and applies fixes using vasu-playwright-utils patterns.
|
|
190
|
+
|
|
191
|
+
### Workflow
|
|
192
|
+
|
|
193
|
+
1. **Plan**: Use the test planner agent to explore a URL and create a test plan
|
|
194
|
+
2. **Generate**: Use the test generator agent to create test code from the plan or from a URL
|
|
195
|
+
3. **Heal**: Use the test healer agent to fix any failing tests
|