@testspectra/cli 1.2.1 → 1.2.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/package.json +8 -8
- package/templates/default/package.json +3 -3
- package/templates/nx/package.json +3 -3
- package/templates/react-component/package.json +3 -3
- package/templates/react-component/specs/BadgeComponent/TC-0010-scoped-child-lookup/spec.md +21 -0
- package/templates/react-component/specs/BadgeComponent/TC-0010-scoped-child-lookup/web.test.tsx +9 -0
- package/templates/react-component/specs/ButtonComponent/{TC-0006-button-bounds-and-parent → TC-0011-button-bounds-and-parent}/spec.md +1 -1
- package/templates/react-component/specs/ButtonComponent/TC-0011-button-bounds-and-parent/web.test.tsx +29 -0
- package/templates/react-component/specs/ButtonComponent/{TC-0007-button-wait-and-remove → TC-0012-button-wait-and-remove}/spec.md +1 -1
- package/templates/react-component/specs/ButtonComponent/{TC-0007-button-wait-and-remove → TC-0012-button-wait-and-remove}/web.test.tsx +11 -6
- package/templates/react-component/specs/InputComponent/TC-0009-input-bounds/web.test.tsx +6 -3
- package/templates/react-component/specs/UserListComponent/{TC-0001-intercepted-user-list → TC-0013-intercepted-user-list}/spec.md +1 -1
- package/templates/react-component/specs/ButtonComponent/TC-0006-button-bounds-and-parent/web.test.tsx +0 -25
- /package/templates/react-component/specs/UserListComponent/{TC-0001-intercepted-user-list → TC-0013-intercepted-user-list}/web.test.tsx +0 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@testspectra/cli",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.2",
|
|
4
4
|
"description": "TestSpectra Cross-Platform Test Runner CLI",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -25,10 +25,10 @@
|
|
|
25
25
|
],
|
|
26
26
|
"dependencies": {
|
|
27
27
|
"@clack/prompts": "^1.7.0",
|
|
28
|
-
"@testspectra/matchers": "^1.2.
|
|
29
|
-
"@testspectra/react": "^1.2.
|
|
30
|
-
"@testspectra/reporter": "^1.2.
|
|
31
|
-
"@testspectra/skills": "^1.2.
|
|
28
|
+
"@testspectra/matchers": "^1.2.2",
|
|
29
|
+
"@testspectra/react": "^1.2.2",
|
|
30
|
+
"@testspectra/reporter": "^1.2.2",
|
|
31
|
+
"@testspectra/skills": "^1.2.2",
|
|
32
32
|
"chalk": "^5.3.0",
|
|
33
33
|
"commander": "^12.1.0",
|
|
34
34
|
"cross-spawn": "^7.0.6",
|
|
@@ -39,9 +39,9 @@
|
|
|
39
39
|
"zod": "^3.23.8"
|
|
40
40
|
},
|
|
41
41
|
"optionalDependencies": {
|
|
42
|
-
"@testspectra/cli-darwin-arm64": "1.2.
|
|
43
|
-
"@testspectra/cli-linux-x64": "1.2.
|
|
44
|
-
"@testspectra/cli-win32-x64": "1.2.
|
|
42
|
+
"@testspectra/cli-darwin-arm64": "1.2.2",
|
|
43
|
+
"@testspectra/cli-linux-x64": "1.2.2",
|
|
44
|
+
"@testspectra/cli-win32-x64": "1.2.2"
|
|
45
45
|
},
|
|
46
46
|
"devDependencies": {
|
|
47
47
|
"@types/cross-spawn": "^6.0.6",
|
|
@@ -17,9 +17,9 @@
|
|
|
17
17
|
"postinstall": "spectra sync-types"
|
|
18
18
|
},
|
|
19
19
|
"devDependencies": {
|
|
20
|
-
"@testspectra/cli": "^1.2.
|
|
21
|
-
"@testspectra/matchers": "^1.2.
|
|
22
|
-
"@testspectra/plugin-demo": "^1.2.
|
|
20
|
+
"@testspectra/cli": "^1.2.2",
|
|
21
|
+
"@testspectra/matchers": "^1.2.2",
|
|
22
|
+
"@testspectra/plugin-demo": "^1.2.2",
|
|
23
23
|
"@types/node": "^20.14.0",
|
|
24
24
|
"@wdio/cli": "^9.2.8",
|
|
25
25
|
"@wdio/local-runner": "^9.2.8",
|
|
@@ -12,8 +12,8 @@
|
|
|
12
12
|
"postinstall": "spectra sync-types"
|
|
13
13
|
},
|
|
14
14
|
"devDependencies": {
|
|
15
|
-
"@testspectra/cli": "^1.2.
|
|
16
|
-
"@testspectra/matchers": "^1.2.
|
|
15
|
+
"@testspectra/cli": "^1.2.2",
|
|
16
|
+
"@testspectra/matchers": "^1.2.2",
|
|
17
17
|
"@types/node": "^20.14.0",
|
|
18
18
|
"@wdio/cli": "^9.2.8",
|
|
19
19
|
"@wdio/local-runner": "^9.2.8",
|
|
@@ -24,6 +24,6 @@
|
|
|
24
24
|
"nx": "^20.8.4",
|
|
25
25
|
"typescript": "^5.4.5",
|
|
26
26
|
"webdriverio": "^9.2.8",
|
|
27
|
-
"@testspectra/plugin-demo": "^1.2.
|
|
27
|
+
"@testspectra/plugin-demo": "^1.2.2"
|
|
28
28
|
}
|
|
29
29
|
}
|
|
@@ -14,9 +14,9 @@
|
|
|
14
14
|
"postinstall": "spectra sync-types"
|
|
15
15
|
},
|
|
16
16
|
"devDependencies": {
|
|
17
|
-
"@testspectra/cli": "^1.2.
|
|
18
|
-
"@testspectra/matchers": "^1.2.
|
|
19
|
-
"@testspectra/react": "^1.2.
|
|
17
|
+
"@testspectra/cli": "^1.2.2",
|
|
18
|
+
"@testspectra/matchers": "^1.2.2",
|
|
19
|
+
"@testspectra/react": "^1.2.2",
|
|
20
20
|
"@types/node": "^20.14.0",
|
|
21
21
|
"@types/react": "^18.3.3",
|
|
22
22
|
"@types/react-dom": "^18.3.0",
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: TC-0010
|
|
3
|
+
title: Verify scoped child lookup within badge root
|
|
4
|
+
priority: High
|
|
5
|
+
caseType: Positive
|
|
6
|
+
status: automated
|
|
7
|
+
coverage:
|
|
8
|
+
web: automated
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# TC-0010: Scoped Child Lookup Within Badge Root
|
|
12
|
+
|
|
13
|
+
Verify that `Spectra.get('~badge').get('~badge-label')` resolves the child element scoped to the
|
|
14
|
+
badge root (not page-wide), and that the collection form `Spectra.get('~badge').getAll('~badge-label')`
|
|
15
|
+
finds the same scoped descendants.
|
|
16
|
+
|
|
17
|
+
## Test Steps
|
|
18
|
+
|
|
19
|
+
1. Mount `<Badge label="Scoped Badge" dot />`.
|
|
20
|
+
2. Verify `Spectra.get('~badge').get('~badge-label')` resolves to the scoped label with the expected text.
|
|
21
|
+
3. Verify `Spectra.get('~badge').getAll('~badge-label')` finds exactly one scoped label.
|
package/templates/react-component/specs/BadgeComponent/TC-0010-scoped-child-lookup/web.test.tsx
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Badge } from '../../../src/components/Badge/Badge.js';
|
|
2
|
+
import { withProviders } from '../../../src/test-utils.js';
|
|
3
|
+
|
|
4
|
+
it('Verify scoped child lookup within badge root', async () => {
|
|
5
|
+
await Spectra.mount(withProviders(<Badge label="Scoped Badge" dot />));
|
|
6
|
+
|
|
7
|
+
await Spectra.get('~badge').get('~badge-label').shouldHaveText('Scoped Badge');
|
|
8
|
+
await Spectra.get('~badge').getAll('~badge-label').shouldHaveLength(1);
|
|
9
|
+
});
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { Button } from '../../../src/components/Button/Button.js';
|
|
2
|
+
import { withProviders } from '../../../src/test-utils.js';
|
|
3
|
+
|
|
4
|
+
it('Verify button bounds and parent element access', async () => {
|
|
5
|
+
await Spectra.mount(
|
|
6
|
+
withProviders(
|
|
7
|
+
<div>
|
|
8
|
+
<Button label="Bounds Test" />
|
|
9
|
+
</div>,
|
|
10
|
+
),
|
|
11
|
+
);
|
|
12
|
+
|
|
13
|
+
const button = Spectra.get('~button');
|
|
14
|
+
|
|
15
|
+
// getBounds returns position + size
|
|
16
|
+
const bounds = await button.getBounds();
|
|
17
|
+
if (!(bounds.width > 0) || !(bounds.height > 0)) {
|
|
18
|
+
throw new Error(`Expected positive button bounds, got ${JSON.stringify(bounds)}`);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
// parent() navigates up the DOM tree
|
|
22
|
+
await button.parent().shouldBeVisible();
|
|
23
|
+
|
|
24
|
+
// closest() finds the matching ancestor
|
|
25
|
+
const wrapper = await button.closest('div');
|
|
26
|
+
if (!wrapper) {
|
|
27
|
+
throw new Error('Expected button.closest("div") to resolve an ancestor');
|
|
28
|
+
}
|
|
29
|
+
});
|
|
@@ -2,17 +2,22 @@ import { Button } from '../../../src/components/Button/Button.js';
|
|
|
2
2
|
import { withProviders } from '../../../src/test-utils.js';
|
|
3
3
|
|
|
4
4
|
it('Verify button wait states and element removal detection', async () => {
|
|
5
|
-
await Spectra.mount(
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
await Spectra.mount(
|
|
6
|
+
withProviders(
|
|
7
|
+
<div>
|
|
8
|
+
<Button label="Wait Test" />
|
|
9
|
+
</div>,
|
|
10
|
+
),
|
|
11
|
+
);
|
|
8
12
|
|
|
9
13
|
const button = Spectra.get('~button');
|
|
10
14
|
|
|
11
15
|
// waitForClickable — button should be clickable
|
|
12
16
|
const clickable = await button.waitForClickable({ timeout: 3000 });
|
|
13
|
-
|
|
17
|
+
if (!clickable) {
|
|
18
|
+
throw new Error('Expected button to become clickable within timeout');
|
|
19
|
+
}
|
|
14
20
|
|
|
15
|
-
//
|
|
16
|
-
// waitForElementRemoved would need a dynamically removed element — skip for static mount
|
|
21
|
+
// Static mount stays visible; removal waits are covered by integration tests.
|
|
17
22
|
await button.shouldBeVisible();
|
|
18
23
|
});
|
|
@@ -7,9 +7,12 @@ it('Verify input bounds and closest ancestor', async () => {
|
|
|
7
7
|
const input = Spectra.get('input');
|
|
8
8
|
|
|
9
9
|
const bounds = await input.getBounds();
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
if (!(bounds.width > 0) || !(bounds.height > 0)) {
|
|
11
|
+
throw new Error(`Expected positive input bounds, got ${JSON.stringify(bounds)}`);
|
|
12
|
+
}
|
|
12
13
|
|
|
13
14
|
const closest = await input.closest('div');
|
|
14
|
-
|
|
15
|
+
if (!closest) {
|
|
16
|
+
throw new Error('Expected input.closest("div") to resolve an ancestor');
|
|
17
|
+
}
|
|
15
18
|
});
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { Button } from '../../../src/components/Button/Button.js';
|
|
2
|
-
import { withProviders } from '../../../src/test-utils.js';
|
|
3
|
-
|
|
4
|
-
it('Verify button bounds and parent element access', async () => {
|
|
5
|
-
await Spectra.mount(withProviders(
|
|
6
|
-
<div><Button label="Bounds Test" /></div>,
|
|
7
|
-
));
|
|
8
|
-
|
|
9
|
-
const button = Spectra.get('~button');
|
|
10
|
-
|
|
11
|
-
// getBounds returns position + size
|
|
12
|
-
const bounds = await button.getBounds();
|
|
13
|
-
expect(bounds.width).toBeGreaterThan(0);
|
|
14
|
-
expect(bounds.height).toBeGreaterThan(0);
|
|
15
|
-
expect(typeof bounds.x).toBe('number');
|
|
16
|
-
expect(typeof bounds.y).toBe('number');
|
|
17
|
-
|
|
18
|
-
// parent() navigates up the DOM tree
|
|
19
|
-
const parent = button.parent();
|
|
20
|
-
await parent.shouldBeVisible();
|
|
21
|
-
|
|
22
|
-
// closest() finds matching ancestor
|
|
23
|
-
const wrapper = await button.closest('div');
|
|
24
|
-
expect(wrapper).not.toBeNull();
|
|
25
|
-
});
|