@futdevpro/dynamo-e2e 1.18.8 → 1.18.9
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/.dynamo/pipeline.cicd.config.json +3 -3
- package/CHANGELOG.md +23 -0
- package/README.md +1 -1
- package/build/_modules/generators/_collections/cli-runner.util.d.ts.map +1 -1
- package/build/_modules/generators/_collections/cli-runner.util.js +5 -11
- package/build/_modules/generators/_collections/cli-runner.util.js.map +1 -1
- package/build/_modules/generators/bootstrap.spec.js +4 -3
- package/build/_modules/generators/bootstrap.spec.js.map +1 -1
- package/build/_modules/presets/_collections/constants/playwright-viewport-presets.const.d.ts +22 -0
- package/build/_modules/presets/_collections/constants/playwright-viewport-presets.const.d.ts.map +1 -0
- package/build/_modules/presets/_collections/constants/playwright-viewport-presets.const.js +69 -0
- package/build/_modules/presets/_collections/constants/playwright-viewport-presets.const.js.map +1 -0
- package/build/_modules/presets/_collections/global-setup.factory.d.ts +14 -0
- package/build/_modules/presets/_collections/global-setup.factory.d.ts.map +1 -0
- package/build/_modules/presets/_collections/global-setup.factory.js +113 -0
- package/build/_modules/presets/_collections/global-setup.factory.js.map +1 -0
- package/build/_modules/presets/_collections/playwright-config.factory.d.ts +19 -0
- package/build/_modules/presets/_collections/playwright-config.factory.d.ts.map +1 -0
- package/build/_modules/presets/_collections/playwright-config.factory.js +107 -0
- package/build/_modules/presets/_collections/playwright-config.factory.js.map +1 -0
- package/build/_modules/presets/_collections/viewport-preset-resolver.util.d.ts +8 -0
- package/build/_modules/presets/_collections/viewport-preset-resolver.util.d.ts.map +1 -0
- package/build/_modules/presets/_collections/viewport-preset-resolver.util.js +25 -0
- package/build/_modules/presets/_collections/viewport-preset-resolver.util.js.map +1 -0
- package/build/_modules/presets/_models/interfaces/global-setup-options.interface.d.ts +28 -0
- package/build/_modules/presets/_models/interfaces/global-setup-options.interface.d.ts.map +1 -0
- package/build/_modules/presets/_models/interfaces/global-setup-options.interface.js +3 -0
- package/build/_modules/presets/_models/interfaces/global-setup-options.interface.js.map +1 -0
- package/build/_modules/presets/_models/interfaces/playwright-config-options.interface.d.ts +43 -0
- package/build/_modules/presets/_models/interfaces/playwright-config-options.interface.d.ts.map +1 -0
- package/build/_modules/presets/_models/interfaces/playwright-config-options.interface.js +3 -0
- package/build/_modules/presets/_models/interfaces/playwright-config-options.interface.js.map +1 -0
- package/build/_modules/presets/index.d.ts +6 -0
- package/build/_modules/presets/index.d.ts.map +1 -1
- package/build/_modules/presets/index.js +12 -1
- package/build/_modules/presets/index.js.map +1 -1
- package/build/_modules/presets/presets.spec.d.ts +2 -0
- package/build/_modules/presets/presets.spec.d.ts.map +1 -0
- package/build/_modules/presets/presets.spec.js +230 -0
- package/build/_modules/presets/presets.spec.js.map +1 -0
- package/build/_modules/vqa/generators/ai-agent-readme.template.d.ts +2 -1
- package/build/_modules/vqa/generators/ai-agent-readme.template.d.ts.map +1 -1
- package/build/_modules/vqa/generators/ai-agent-readme.template.js +22 -3
- package/build/_modules/vqa/generators/ai-agent-readme.template.js.map +1 -1
- package/coverage/contracts/_collections/index.html +1 -1
- package/coverage/contracts/_collections/index.ts.html +1 -1
- package/coverage/contracts/_collections/utils/index.html +9 -9
- package/coverage/contracts/_collections/utils/test-id.util.ts.html +15 -30
- package/coverage/contracts/_enums/cwv-metric-type.enum.ts.html +1 -1
- package/coverage/contracts/_enums/field-test-case-type.enum.ts.html +4 -34
- package/coverage/contracts/_enums/index.html +5 -5
- package/coverage/contracts/_enums/index.ts.html +1 -1
- package/coverage/contracts/_enums/standard-viewport.enum.ts.html +1 -1
- package/coverage/contracts/_enums/test-expectation-type.enum.ts.html +1 -1
- package/coverage/contracts/_enums/test-run-mode-type.enum.ts.html +1 -1
- package/coverage/contracts/index.html +1 -1
- package/coverage/contracts/index.ts.html +1 -1
- package/coverage/cwv/_collections/cwv-aggregator.util.ts.html +1 -1
- package/coverage/cwv/_collections/cwv-comparison.util.ts.html +4 -4
- package/coverage/cwv/_collections/cwv-diagnose.util.ts.html +1 -1
- package/coverage/cwv/_collections/cwv-emission.util.ts.html +1 -1
- package/coverage/cwv/_collections/cwv-summarize.util.ts.html +1 -1
- package/coverage/cwv/_collections/index.html +7 -7
- package/coverage/cwv/_collections/inp-interaction-script.const.ts.html +1 -1
- package/coverage/cwv/_collections/web-vitals-page-script.const.ts.html +1 -1
- package/coverage/cwv/cwv-suite.generator.ts.html +3 -3
- package/coverage/cwv/index.html +5 -5
- package/coverage/generators/_collections/cli-runner.util.ts.html +1 -1
- package/coverage/generators/_collections/config-validator.util.ts.html +1 -1
- package/coverage/generators/_collections/field-emission.util.ts.html +103 -235
- package/coverage/generators/_collections/form-level-emission.util.ts.html +33 -39
- package/coverage/generators/_collections/index.html +31 -31
- package/coverage/generators/_collections/json-schema.util.ts.html +1 -1
- package/coverage/generators/_collections/preset-configs.const.ts.html +1 -1
- package/coverage/generators/_collections/spec-emission.util.ts.html +35 -35
- package/coverage/generators/_collections/test-case-filter.util.ts.html +66 -258
- package/coverage/generators/_collections/viewport-emission.util.ts.html +1 -1
- package/coverage/generators/form-suite.generator.ts.html +79 -97
- package/coverage/generators/index.html +18 -18
- package/coverage/generators/viewport-suite.generator.ts.html +3 -3
- package/coverage/index.html +50 -95
- package/coverage/lcov-report/contracts/_collections/index.html +1 -1
- package/coverage/lcov-report/contracts/_collections/index.ts.html +1 -1
- package/coverage/lcov-report/contracts/_collections/utils/index.html +9 -9
- package/coverage/lcov-report/contracts/_collections/utils/test-id.util.ts.html +15 -30
- package/coverage/lcov-report/contracts/_enums/cwv-metric-type.enum.ts.html +1 -1
- package/coverage/lcov-report/contracts/_enums/field-test-case-type.enum.ts.html +4 -34
- package/coverage/lcov-report/contracts/_enums/index.html +5 -5
- package/coverage/lcov-report/contracts/_enums/index.ts.html +1 -1
- package/coverage/lcov-report/contracts/_enums/standard-viewport.enum.ts.html +1 -1
- package/coverage/lcov-report/contracts/_enums/test-expectation-type.enum.ts.html +1 -1
- package/coverage/lcov-report/contracts/_enums/test-run-mode-type.enum.ts.html +1 -1
- package/coverage/lcov-report/contracts/index.html +1 -1
- package/coverage/lcov-report/contracts/index.ts.html +1 -1
- package/coverage/lcov-report/cwv/_collections/cwv-aggregator.util.ts.html +1 -1
- package/coverage/lcov-report/cwv/_collections/cwv-comparison.util.ts.html +4 -4
- package/coverage/lcov-report/cwv/_collections/cwv-diagnose.util.ts.html +1 -1
- package/coverage/lcov-report/cwv/_collections/cwv-emission.util.ts.html +1 -1
- package/coverage/lcov-report/cwv/_collections/cwv-summarize.util.ts.html +1 -1
- package/coverage/lcov-report/cwv/_collections/index.html +7 -7
- package/coverage/lcov-report/cwv/_collections/inp-interaction-script.const.ts.html +1 -1
- package/coverage/lcov-report/cwv/_collections/web-vitals-page-script.const.ts.html +1 -1
- package/coverage/lcov-report/cwv/cwv-suite.generator.ts.html +3 -3
- package/coverage/lcov-report/cwv/index.html +5 -5
- package/coverage/lcov-report/generators/_collections/cli-runner.util.ts.html +1 -1
- package/coverage/lcov-report/generators/_collections/config-validator.util.ts.html +1 -1
- package/coverage/lcov-report/generators/_collections/field-emission.util.ts.html +103 -235
- package/coverage/lcov-report/generators/_collections/form-level-emission.util.ts.html +33 -39
- package/coverage/lcov-report/generators/_collections/index.html +31 -31
- package/coverage/lcov-report/generators/_collections/json-schema.util.ts.html +1 -1
- package/coverage/lcov-report/generators/_collections/preset-configs.const.ts.html +1 -1
- package/coverage/lcov-report/generators/_collections/spec-emission.util.ts.html +35 -35
- package/coverage/lcov-report/generators/_collections/test-case-filter.util.ts.html +66 -258
- package/coverage/lcov-report/generators/_collections/viewport-emission.util.ts.html +1 -1
- package/coverage/lcov-report/generators/form-suite.generator.ts.html +79 -97
- package/coverage/lcov-report/generators/index.html +18 -18
- package/coverage/lcov-report/generators/viewport-suite.generator.ts.html +3 -3
- package/coverage/lcov-report/index.html +50 -95
- package/coverage/lcov-report/runtime/_collections/assertion-helpers.util.ts.html +7 -16
- package/coverage/lcov-report/runtime/_collections/index.html +17 -17
- package/coverage/lcov-report/runtime/_collections/unique-generator.util.ts.html +3 -3
- package/coverage/lcov-report/runtime/_collections/wait-helpers.util.ts.html +5 -5
- package/coverage/lcov-report/runtime/_services/dialog-page-object.ts.html +2 -2
- package/coverage/lcov-report/runtime/_services/field-page-object.ts.html +2 -2
- package/coverage/lcov-report/runtime/_services/form-page-object.ts.html +2 -2
- package/coverage/lcov-report/runtime/_services/index.html +9 -9
- package/coverage/lcov-report/runtime/_services/loader-page-object.ts.html +2 -2
- package/coverage/lcov-report/runtime/_services/logger.service.ts.html +5 -5
- package/coverage/lcov-report/runtime/_services/login-flow-helper.base.ts.html +2 -2
- package/coverage/lcov-report/runtime/_services/nav-page-object.ts.html +2 -2
- package/coverage/lcov-report/runtime/_services/toast-page-object.ts.html +1 -1
- package/coverage/lcov-report/runtime/_services/wave-2b-page-objects.ts.html +6 -6
- package/coverage/lcov-report/runtime/index.html +1 -1
- package/coverage/lcov-report/runtime/index.ts.html +1 -1
- package/coverage/lcov.info +804 -3165
- package/coverage/runtime/_collections/assertion-helpers.util.ts.html +7 -16
- package/coverage/runtime/_collections/index.html +17 -17
- package/coverage/runtime/_collections/unique-generator.util.ts.html +3 -3
- package/coverage/runtime/_collections/wait-helpers.util.ts.html +5 -5
- package/coverage/runtime/_services/dialog-page-object.ts.html +2 -2
- package/coverage/runtime/_services/field-page-object.ts.html +2 -2
- package/coverage/runtime/_services/form-page-object.ts.html +2 -2
- package/coverage/runtime/_services/index.html +9 -9
- package/coverage/runtime/_services/loader-page-object.ts.html +2 -2
- package/coverage/runtime/_services/logger.service.ts.html +5 -5
- package/coverage/runtime/_services/login-flow-helper.base.ts.html +2 -2
- package/coverage/runtime/_services/nav-page-object.ts.html +2 -2
- package/coverage/runtime/_services/toast-page-object.ts.html +1 -1
- package/coverage/runtime/_services/wave-2b-page-objects.ts.html +6 -6
- package/coverage/runtime/index.html +1 -1
- package/coverage/runtime/index.ts.html +1 -1
- package/coverage/tmp/coverage-228636-1781075225757-0.json +1 -0
- package/coverage/tmp/coverage-228704-1781075227108-0.json +1 -0
- package/dogfood/generated/date-range-field-new.spec.ts +54 -0
- package/dogfood/generated/password-field-new.spec.ts +97 -0
- package/dogfood/generated/radio-select-field-new.spec.ts +69 -0
- package/dogfood/generated/slider-field-new.spec.ts +47 -0
- package/dogfood/generated/text-field-new.spec.ts +0 -0
- package/logs/cicd-job.json +3 -0
- package/logs/cicd-report.json +3 -0
- package/logs/cicd-status.json +3 -0
- package/package.json +4 -1
- package/.dynamo/logs/cicd-pipeline/status.json +0 -74
- package/coverage/lcov-report/vqa/_collections/utils/deterministic-finding.util.ts.html +0 -481
- package/coverage/lcov-report/vqa/_collections/utils/finding-id.util.ts.html +0 -214
- package/coverage/lcov-report/vqa/_collections/utils/finding-validator.util.ts.html +0 -463
- package/coverage/lcov-report/vqa/_collections/utils/index.html +0 -176
- package/coverage/lcov-report/vqa/_collections/utils/manifest-validator.util.ts.html +0 -652
- package/coverage/lcov-report/vqa/_collections/utils/risk-score.util.ts.html +0 -424
- package/coverage/lcov-report/vqa/_enums/dom-evidence-detector.enum.ts.html +0 -214
- package/coverage/lcov-report/vqa/_enums/finding-severity.enum.ts.html +0 -133
- package/coverage/lcov-report/vqa/_enums/finding-status.enum.ts.html +0 -151
- package/coverage/lcov-report/vqa/_enums/index.html +0 -161
- package/coverage/lcov-report/vqa/_enums/visual-state-type.enum.ts.html +0 -235
- package/coverage/lcov-report/vqa/generators/ai-agent-readme.template.ts.html +0 -643
- package/coverage/lcov-report/vqa/generators/bundle-summary.template.ts.html +0 -316
- package/coverage/lcov-report/vqa/generators/capture-spec.generator.ts.html +0 -835
- package/coverage/lcov-report/vqa/generators/comparison-bundle.generator.ts.html +0 -898
- package/coverage/lcov-report/vqa/generators/index.html +0 -176
- package/coverage/lcov-report/vqa/generators/review-bundle.generator.ts.html +0 -559
- package/coverage/tmp/coverage-13181-1784118006591-0.json +0 -1
- package/coverage/tmp/coverage-13186-1784118005044-0.json +0 -1
- package/coverage/vqa/_collections/utils/deterministic-finding.util.ts.html +0 -481
- package/coverage/vqa/_collections/utils/finding-id.util.ts.html +0 -214
- package/coverage/vqa/_collections/utils/finding-validator.util.ts.html +0 -463
- package/coverage/vqa/_collections/utils/index.html +0 -176
- package/coverage/vqa/_collections/utils/manifest-validator.util.ts.html +0 -652
- package/coverage/vqa/_collections/utils/risk-score.util.ts.html +0 -424
- package/coverage/vqa/_enums/dom-evidence-detector.enum.ts.html +0 -214
- package/coverage/vqa/_enums/finding-severity.enum.ts.html +0 -133
- package/coverage/vqa/_enums/finding-status.enum.ts.html +0 -151
- package/coverage/vqa/_enums/index.html +0 -161
- package/coverage/vqa/_enums/visual-state-type.enum.ts.html +0 -235
- package/coverage/vqa/generators/ai-agent-readme.template.ts.html +0 -643
- package/coverage/vqa/generators/bundle-summary.template.ts.html +0 -316
- package/coverage/vqa/generators/capture-spec.generator.ts.html +0 -835
- package/coverage/vqa/generators/comparison-bundle.generator.ts.html +0 -898
- package/coverage/vqa/generators/index.html +0 -176
- package/coverage/vqa/generators/review-bundle.generator.ts.html +0 -559
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auto-generated by @futdevpro/dynamo-e2e — FormSuite Generator
|
|
3
|
+
* Form key: sandbox-date-range-default
|
|
4
|
+
* Route: /c/date-range-field-new
|
|
5
|
+
* Built at: WAVE-1-STAMP
|
|
6
|
+
*
|
|
7
|
+
* DO NOT EDIT BY HAND. Re-emit via `dc e2e generate-form-suite` or
|
|
8
|
+
* `DyE2E_FormSuite_Generator.emit({...})` consumer-script.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import { test, expect, Locator } from '@playwright/test';
|
|
12
|
+
|
|
13
|
+
test.describe('Sandbox: DyNX_DateRangeFieldNew (Default variant)', (): void => {
|
|
14
|
+
|
|
15
|
+
test.describe('Field: vacationRange (dateRange)', (): void => {
|
|
16
|
+
test.beforeEach(async ({ page }): Promise<void> => {
|
|
17
|
+
const response = await page.goto('/c/date-range-field-new');
|
|
18
|
+
expect(response?.ok()).toBeTruthy();
|
|
19
|
+
await page.locator('dynamo-date-range-field-new').first().waitFor({ state: 'visible' });
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
test('field[vacationRange] dateRange:valid → valid — normál tartomány', async ({ page }): Promise<void> => {
|
|
23
|
+
const startInput: Locator = page.getByTestId('sandbox-date-range-default-start');
|
|
24
|
+
const endInput: Locator = page.getByTestId('sandbox-date-range-default-end');
|
|
25
|
+
await startInput.fill('2026-06-01');
|
|
26
|
+
await endInput.fill('2026-06-30');
|
|
27
|
+
await endInput.blur();
|
|
28
|
+
const fieldRoot: Locator = page.locator('[data-testid="sandbox-date-range-default"]').locator('xpath=ancestor-or-self::*[contains(@class,"field") or starts-with(local-name(),"dynamo-")]').first();
|
|
29
|
+
await expect(fieldRoot.locator('.text-red-400.mt-1')).toHaveCount(0);
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
test('field[vacationRange] dateRange:equal → valid — start === end (allowSameDay)', async ({ page }): Promise<void> => {
|
|
33
|
+
const startInput: Locator = page.getByTestId('sandbox-date-range-default-start');
|
|
34
|
+
const endInput: Locator = page.getByTestId('sandbox-date-range-default-end');
|
|
35
|
+
await startInput.fill('2026-06-15');
|
|
36
|
+
await endInput.fill('2026-06-15');
|
|
37
|
+
await endInput.blur();
|
|
38
|
+
const fieldRoot: Locator = page.locator('[data-testid="sandbox-date-range-default"]').locator('xpath=ancestor-or-self::*[contains(@class,"field") or starts-with(local-name(),"dynamo-")]').first();
|
|
39
|
+
await expect(fieldRoot.locator('.text-red-400.mt-1')).toHaveCount(0);
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
test('field[vacationRange] dateRange:start-after-end → invalid:dateRange — start > end → cross-field error', async ({ page }): Promise<void> => {
|
|
43
|
+
const startInput: Locator = page.getByTestId('sandbox-date-range-default-start');
|
|
44
|
+
const endInput: Locator = page.getByTestId('sandbox-date-range-default-end');
|
|
45
|
+
await startInput.fill('2026-06-30');
|
|
46
|
+
await endInput.fill('2026-06-01');
|
|
47
|
+
await endInput.blur();
|
|
48
|
+
const fieldRoot: Locator = page.locator('[data-testid="sandbox-date-range-default"]').locator('xpath=ancestor-or-self::*[starts-with(local-name(),"dynamo-")]').first();
|
|
49
|
+
await expect(fieldRoot.locator('.text-red-400.mt-1').first()).toBeVisible();
|
|
50
|
+
// expectedErrorKey: dateRange
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
});
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auto-generated by @futdevpro/dynamo-e2e — FormSuite Generator
|
|
3
|
+
* Form key: sandbox-pwd-required
|
|
4
|
+
* Route: /c/password-field-new
|
|
5
|
+
* Built at: WAVE-1-STAMP
|
|
6
|
+
*
|
|
7
|
+
* DO NOT EDIT BY HAND. Re-emit via `dc e2e generate-form-suite` or
|
|
8
|
+
* `DyE2E_FormSuite_Generator.emit({...})` consumer-script.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import { test, expect, Locator } from '@playwright/test';
|
|
12
|
+
|
|
13
|
+
test.describe('Sandbox: DyNX_PasswordFieldNew (Required variant)', (): void => {
|
|
14
|
+
|
|
15
|
+
test.describe('Field: password (password)', (): void => {
|
|
16
|
+
test.beforeEach(async ({ page }): Promise<void> => {
|
|
17
|
+
const response = await page.goto('/c/password-field-new');
|
|
18
|
+
expect(response?.ok()).toBeTruthy();
|
|
19
|
+
await page.locator('dynamo-password-field-new').first().waitFor({ state: 'visible' });
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
test('field[password] pw:empty → valid — üres jelszó', async ({ page }): Promise<void> => {
|
|
23
|
+
const input: Locator = page.getByTestId('sandbox-pwd-required');
|
|
24
|
+
await input.fill('');
|
|
25
|
+
await input.blur();
|
|
26
|
+
const fieldRoot: Locator = page.locator('[data-testid="sandbox-pwd-required"]').locator('xpath=ancestor-or-self::*[contains(@class,"field") or starts-with(local-name(),"dynamo-")]').first();
|
|
27
|
+
await expect(fieldRoot.locator('.text-red-400.mt-1')).toHaveCount(0);
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
test('field[password] pw:ascii → valid — tipikus ASCII jelszó', async ({ page }): Promise<void> => {
|
|
31
|
+
const input: Locator = page.getByTestId('sandbox-pwd-required');
|
|
32
|
+
await input.fill('SecurePw123!');
|
|
33
|
+
await input.blur();
|
|
34
|
+
const fieldRoot: Locator = page.locator('[data-testid="sandbox-pwd-required"]').locator('xpath=ancestor-or-self::*[contains(@class,"field") or starts-with(local-name(),"dynamo-")]').first();
|
|
35
|
+
await expect(fieldRoot.locator('.text-red-400.mt-1')).toHaveCount(0);
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
test('field[password] pw:unicode-basic → valid — unicode jelszó', async ({ page }): Promise<void> => {
|
|
39
|
+
const input: Locator = page.getByTestId('sandbox-pwd-required');
|
|
40
|
+
await input.fill('JelszóBiztos123');
|
|
41
|
+
await input.blur();
|
|
42
|
+
const fieldRoot: Locator = page.locator('[data-testid="sandbox-pwd-required"]').locator('xpath=ancestor-or-self::*[contains(@class,"field") or starts-with(local-name(),"dynamo-")]').first();
|
|
43
|
+
await expect(fieldRoot.locator('.text-red-400.mt-1')).toHaveCount(0);
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
test('field[password] pw:unicode-emoji → valid — emoji jelszóban', async ({ page }): Promise<void> => {
|
|
47
|
+
const input: Locator = page.getByTestId('sandbox-pwd-required');
|
|
48
|
+
await input.fill('Pw🔐Strong');
|
|
49
|
+
await input.blur();
|
|
50
|
+
const fieldRoot: Locator = page.locator('[data-testid="sandbox-pwd-required"]').locator('xpath=ancestor-or-self::*[contains(@class,"field") or starts-with(local-name(),"dynamo-")]').first();
|
|
51
|
+
await expect(fieldRoot.locator('.text-red-400.mt-1')).toHaveCount(0);
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
test('field[password] pw:short → invalid:minLength — < 8 char (default minLength)', async ({ page }): Promise<void> => {
|
|
55
|
+
const input: Locator = page.getByTestId('sandbox-pwd-required');
|
|
56
|
+
await input.fill('aaaaaaa');
|
|
57
|
+
await input.blur();
|
|
58
|
+
const fieldRoot: Locator = page.locator('[data-testid="sandbox-pwd-required"]').locator('xpath=ancestor-or-self::*[starts-with(local-name(),"dynamo-")]').first();
|
|
59
|
+
await expect(fieldRoot.locator('.text-red-400.mt-1').first()).toBeVisible();
|
|
60
|
+
// expectedErrorKey: minLength
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
test('field[password] pw:single-whitespace → valid — space-only password (some sites reject)', async ({ page }): Promise<void> => {
|
|
64
|
+
const input: Locator = page.getByTestId('sandbox-pwd-required');
|
|
65
|
+
await input.fill(' ');
|
|
66
|
+
await input.blur();
|
|
67
|
+
const fieldRoot: Locator = page.locator('[data-testid="sandbox-pwd-required"]').locator('xpath=ancestor-or-self::*[contains(@class,"field") or starts-with(local-name(),"dynamo-")]').first();
|
|
68
|
+
await expect(fieldRoot.locator('.text-red-400.mt-1')).toHaveCount(0);
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
test('field[password] pw:xss-tag → valid — XSS-tag jelszóban', async ({ page }): Promise<void> => {
|
|
72
|
+
const input: Locator = page.getByTestId('sandbox-pwd-required');
|
|
73
|
+
await input.fill('<script>alert(1)</script>');
|
|
74
|
+
await input.blur();
|
|
75
|
+
const fieldRoot: Locator = page.locator('[data-testid="sandbox-pwd-required"]').locator('xpath=ancestor-or-self::*[contains(@class,"field") or starts-with(local-name(),"dynamo-")]').first();
|
|
76
|
+
await expect(fieldRoot.locator('.text-red-400.mt-1')).toHaveCount(0);
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
test('field[password] pw:sql-injection-shape → valid — SQL-injection-szerű jelszó', async ({ page }): Promise<void> => {
|
|
80
|
+
const input: Locator = page.getByTestId('sandbox-pwd-required');
|
|
81
|
+
await input.fill('\' OR \'1\'=\'1\' --');
|
|
82
|
+
await input.blur();
|
|
83
|
+
const fieldRoot: Locator = page.locator('[data-testid="sandbox-pwd-required"]').locator('xpath=ancestor-or-self::*[contains(@class,"field") or starts-with(local-name(),"dynamo-")]').first();
|
|
84
|
+
await expect(fieldRoot.locator('.text-red-400.mt-1')).toHaveCount(0);
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
test('field[password] pw:oversize → invalid:maxLength — 256+ char jelszó', async ({ page }): Promise<void> => {
|
|
88
|
+
const input: Locator = page.getByTestId('sandbox-pwd-required');
|
|
89
|
+
await input.fill('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa');
|
|
90
|
+
await input.blur();
|
|
91
|
+
const fieldRoot: Locator = page.locator('[data-testid="sandbox-pwd-required"]').locator('xpath=ancestor-or-self::*[starts-with(local-name(),"dynamo-")]').first();
|
|
92
|
+
await expect(fieldRoot.locator('.text-red-400.mt-1').first()).toBeVisible();
|
|
93
|
+
// expectedErrorKey: maxLength
|
|
94
|
+
});
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
});
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auto-generated by @futdevpro/dynamo-e2e — FormSuite Generator
|
|
3
|
+
* Form key: sandbox-radio-vertical
|
|
4
|
+
* Route: /c/radio-select-field-new
|
|
5
|
+
* Built at: WAVE-1-STAMP
|
|
6
|
+
*
|
|
7
|
+
* DO NOT EDIT BY HAND. Re-emit via `dc e2e generate-form-suite` or
|
|
8
|
+
* `DyE2E_FormSuite_Generator.emit({...})` consumer-script.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import { test, expect, Locator } from '@playwright/test';
|
|
12
|
+
|
|
13
|
+
test.describe('Sandbox: DyNX_RadioSelectFieldNew (Vertical variant)', (): void => {
|
|
14
|
+
|
|
15
|
+
test.describe('Field: priority (radioSelect)', (): void => {
|
|
16
|
+
test.beforeEach(async ({ page }): Promise<void> => {
|
|
17
|
+
const response = await page.goto('/c/radio-select-field-new');
|
|
18
|
+
expect(response?.ok()).toBeTruthy();
|
|
19
|
+
await page.locator('dynamo-radio-select-field-new').first().waitFor({ state: 'visible' });
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
test('field[priority] select:none-selected → valid — semmi nincs választva', async ({ page }): Promise<void> => {
|
|
23
|
+
// options index → testId-suffix selection
|
|
24
|
+
const fieldRoot: Locator = page.locator('[data-testid="sandbox-radio-vertical"], dynamo-radio-select-field-new').first();
|
|
25
|
+
// sentinel -1 — generator-runtime should clamp to options.length
|
|
26
|
+
// Wave-1: explicit selector-pattern is per-consumer; szándékosan minimalista.
|
|
27
|
+
const fieldRoot: Locator = page.locator('[data-testid="sandbox-radio-vertical"]').locator('xpath=ancestor-or-self::*[contains(@class,"field") or starts-with(local-name(),"dynamo-")]').first();
|
|
28
|
+
await expect(fieldRoot.locator('.text-red-400.mt-1')).toHaveCount(0);
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
test('field[priority] select:first-option → valid — első opció kiválasztva', async ({ page }): Promise<void> => {
|
|
32
|
+
// options index → testId-suffix selection
|
|
33
|
+
const fieldRoot: Locator = page.locator('[data-testid="sandbox-radio-vertical"], dynamo-radio-select-field-new').first();
|
|
34
|
+
// option index 0 (case-input[0])
|
|
35
|
+
// Wave-1: explicit selector-pattern is per-consumer; szándékosan minimalista.
|
|
36
|
+
const fieldRoot: Locator = page.locator('[data-testid="sandbox-radio-vertical"]').locator('xpath=ancestor-or-self::*[contains(@class,"field") or starts-with(local-name(),"dynamo-")]').first();
|
|
37
|
+
await expect(fieldRoot.locator('.text-red-400.mt-1')).toHaveCount(0);
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
test('field[priority] select:last-option → valid — utolsó opció kiválasztva', async ({ page }): Promise<void> => {
|
|
41
|
+
// options index → testId-suffix selection
|
|
42
|
+
const fieldRoot: Locator = page.locator('[data-testid="sandbox-radio-vertical"], dynamo-radio-select-field-new').first();
|
|
43
|
+
// option index 3 (case-input[0])
|
|
44
|
+
// Wave-1: explicit selector-pattern is per-consumer; szándékosan minimalista.
|
|
45
|
+
const fieldRoot: Locator = page.locator('[data-testid="sandbox-radio-vertical"]').locator('xpath=ancestor-or-self::*[contains(@class,"field") or starts-with(local-name(),"dynamo-")]').first();
|
|
46
|
+
await expect(fieldRoot.locator('.text-red-400.mt-1')).toHaveCount(0);
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
test('field[priority] select:required-empty → invalid:required — required + semmi → invalid', async ({ page }): Promise<void> => {
|
|
50
|
+
// options index → testId-suffix selection
|
|
51
|
+
const fieldRoot: Locator = page.locator('[data-testid="sandbox-radio-vertical"], dynamo-radio-select-field-new').first();
|
|
52
|
+
// sentinel -1 — generator-runtime should clamp to options.length
|
|
53
|
+
// Wave-1: explicit selector-pattern is per-consumer; szándékosan minimalista.
|
|
54
|
+
const fieldRoot: Locator = page.locator('[data-testid="sandbox-radio-vertical"]').locator('xpath=ancestor-or-self::*[starts-with(local-name(),"dynamo-")]').first();
|
|
55
|
+
await expect(fieldRoot.locator('.text-red-400.mt-1').first()).toBeVisible();
|
|
56
|
+
// expectedErrorKey: required
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
test('field[priority] select:disabled-option → valid — disabled opció nem klikkelheto', async ({ page }): Promise<void> => {
|
|
60
|
+
// options index → testId-suffix selection
|
|
61
|
+
const fieldRoot: Locator = page.locator('[data-testid="sandbox-radio-vertical"], dynamo-radio-select-field-new').first();
|
|
62
|
+
// sentinel -1 — generator-runtime should clamp to options.length
|
|
63
|
+
// Wave-1: explicit selector-pattern is per-consumer; szándékosan minimalista.
|
|
64
|
+
const fieldRoot: Locator = page.locator('[data-testid="sandbox-radio-vertical"]').locator('xpath=ancestor-or-self::*[contains(@class,"field") or starts-with(local-name(),"dynamo-")]').first();
|
|
65
|
+
await expect(fieldRoot.locator('.text-red-400.mt-1')).toHaveCount(0);
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
});
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auto-generated by @futdevpro/dynamo-e2e — FormSuite Generator
|
|
3
|
+
* Form key: sandbox-slider-default
|
|
4
|
+
* Route: /c/slider-field-new
|
|
5
|
+
* Built at: WAVE-1-STAMP
|
|
6
|
+
*
|
|
7
|
+
* DO NOT EDIT BY HAND. Re-emit via `dc e2e generate-form-suite` or
|
|
8
|
+
* `DyE2E_FormSuite_Generator.emit({...})` consumer-script.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import { test, expect, Locator } from '@playwright/test';
|
|
12
|
+
|
|
13
|
+
test.describe('Sandbox: DyNX_SliderFieldNew (Default 0-100)', (): void => {
|
|
14
|
+
|
|
15
|
+
test.describe('Field: volume (slider)', (): void => {
|
|
16
|
+
test.beforeEach(async ({ page }): Promise<void> => {
|
|
17
|
+
const response = await page.goto('/c/slider-field-new');
|
|
18
|
+
expect(response?.ok()).toBeTruthy();
|
|
19
|
+
await page.locator('dynamo-slider-field-new').first().waitFor({ state: 'visible' });
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
test('field[volume] slider:min → valid — min-érték', async ({ page }): Promise<void> => {
|
|
23
|
+
const input: Locator = page.getByTestId('sandbox-slider-default');
|
|
24
|
+
await input.fill(String(0 ?? ''));
|
|
25
|
+
await input.blur();
|
|
26
|
+
const fieldRoot: Locator = page.locator('[data-testid="sandbox-slider-default"]').locator('xpath=ancestor-or-self::*[contains(@class,"field") or starts-with(local-name(),"dynamo-")]').first();
|
|
27
|
+
await expect(fieldRoot.locator('.text-red-400.mt-1')).toHaveCount(0);
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
test('field[volume] slider:max → valid — max-érték', async ({ page }): Promise<void> => {
|
|
31
|
+
const input: Locator = page.getByTestId('sandbox-slider-default');
|
|
32
|
+
await input.fill(String(100 ?? ''));
|
|
33
|
+
await input.blur();
|
|
34
|
+
const fieldRoot: Locator = page.locator('[data-testid="sandbox-slider-default"]').locator('xpath=ancestor-or-self::*[contains(@class,"field") or starts-with(local-name(),"dynamo-")]').first();
|
|
35
|
+
await expect(fieldRoot.locator('.text-red-400.mt-1')).toHaveCount(0);
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
test('field[volume] slider:mid → valid — közepes érték', async ({ page }): Promise<void> => {
|
|
39
|
+
const input: Locator = page.getByTestId('sandbox-slider-default');
|
|
40
|
+
await input.fill(String(50 ?? ''));
|
|
41
|
+
await input.blur();
|
|
42
|
+
const fieldRoot: Locator = page.locator('[data-testid="sandbox-slider-default"]').locator('xpath=ancestor-or-self::*[contains(@class,"field") or starts-with(local-name(),"dynamo-")]').first();
|
|
43
|
+
await expect(fieldRoot.locator('.text-red-400.mt-1')).toHaveCount(0);
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
});
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@futdevpro/dynamo-e2e",
|
|
3
|
-
"version": "01.18.
|
|
3
|
+
"version": "01.18.9",
|
|
4
4
|
"description": "End-to-end testing engine for the Dynamo + FDP ecosystem — auto-generated form-coverage tests, viewport audit matrix, CWV diagnostics. Settings-POJO-first.",
|
|
5
5
|
"DyBu_settings": {
|
|
6
6
|
"packageType": "core-package",
|
|
@@ -96,6 +96,9 @@
|
|
|
96
96
|
"typings": "./build/_modules/vqa/index.d.ts"
|
|
97
97
|
}
|
|
98
98
|
},
|
|
99
|
+
"dependencies": {
|
|
100
|
+
"dotenv": "^16.4.5"
|
|
101
|
+
},
|
|
99
102
|
"devDependencies": {
|
|
100
103
|
"@playwright/test": "1.48.2",
|
|
101
104
|
"@types/jasmine": "5.1.4",
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"pid": 12947,
|
|
3
|
-
"startedAt": "2026-07-15T12:19:26.680Z",
|
|
4
|
-
"startedAtMs": 1784117966680,
|
|
5
|
-
"phase": "npm-publish",
|
|
6
|
-
"pipelineComplete": false,
|
|
7
|
-
"serverRunning": false,
|
|
8
|
-
"totalDurationSec": null,
|
|
9
|
-
"restartPending": false,
|
|
10
|
-
"steps": {
|
|
11
|
-
"validate-secrets": {
|
|
12
|
-
"status": "ok",
|
|
13
|
-
"startedAt": "2026-07-15T12:19:26.699Z",
|
|
14
|
-
"logLineStart": 2,
|
|
15
|
-
"logLineEnd": 7,
|
|
16
|
-
"durationSec": 0.3
|
|
17
|
-
},
|
|
18
|
-
"discord-start": {
|
|
19
|
-
"status": "ok",
|
|
20
|
-
"startedAt": "2026-07-15T12:19:28.010Z",
|
|
21
|
-
"logLineStart": 8,
|
|
22
|
-
"logLineEnd": 13,
|
|
23
|
-
"durationSec": 3.4
|
|
24
|
-
},
|
|
25
|
-
"pre-flight": {
|
|
26
|
-
"status": "ok",
|
|
27
|
-
"startedAt": "2026-07-15T12:19:32.384Z",
|
|
28
|
-
"logLineStart": 14,
|
|
29
|
-
"logLineEnd": 16,
|
|
30
|
-
"durationSec": 0.2
|
|
31
|
-
},
|
|
32
|
-
"install": {
|
|
33
|
-
"status": "ok",
|
|
34
|
-
"startedAt": "2026-07-15T12:19:33.605Z",
|
|
35
|
-
"logLineStart": 17,
|
|
36
|
-
"logLineEnd": 40,
|
|
37
|
-
"durationSec": 9
|
|
38
|
-
},
|
|
39
|
-
"build": {
|
|
40
|
-
"status": "ok",
|
|
41
|
-
"startedAt": "2026-07-15T12:19:43.655Z",
|
|
42
|
-
"logLineStart": 41,
|
|
43
|
-
"logLineEnd": 42,
|
|
44
|
-
"durationSec": 7.7
|
|
45
|
-
},
|
|
46
|
-
"test": {
|
|
47
|
-
"status": "ok",
|
|
48
|
-
"startedAt": "2026-07-15T12:19:52.392Z",
|
|
49
|
-
"logLineStart": 43,
|
|
50
|
-
"logLineEnd": 53,
|
|
51
|
-
"durationSec": 2.7,
|
|
52
|
-
"testSummary": {
|
|
53
|
-
"totalSpecs": 345,
|
|
54
|
-
"failures": 0,
|
|
55
|
-
"passed": 345,
|
|
56
|
-
"testDurationSec": 0.345
|
|
57
|
-
}
|
|
58
|
-
},
|
|
59
|
-
"coverage": {
|
|
60
|
-
"status": "ok",
|
|
61
|
-
"startedAt": "2026-07-15T12:19:56.088Z",
|
|
62
|
-
"logLineStart": 54,
|
|
63
|
-
"logLineEnd": 79,
|
|
64
|
-
"durationSec": 11.1
|
|
65
|
-
},
|
|
66
|
-
"npm-publish": {
|
|
67
|
-
"status": "running",
|
|
68
|
-
"startedAt": "2026-07-15T12:20:08.204Z",
|
|
69
|
-
"logLineStart": 80,
|
|
70
|
-
"logLineEnd": null,
|
|
71
|
-
"durationSec": null
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
}
|