@sungen/driver-ui 3.2.35 → 3.3.0-alpha.10

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.
Files changed (92) hide show
  1. package/dist/app-profile-presets.d.ts +12 -0
  2. package/dist/app-profile-presets.d.ts.map +1 -0
  3. package/dist/app-profile-presets.js +85 -0
  4. package/dist/app-profile-presets.js.map +1 -0
  5. package/dist/index.d.ts +37 -0
  6. package/dist/index.d.ts.map +1 -0
  7. package/dist/index.js +93 -0
  8. package/dist/index.js.map +1 -0
  9. package/dist/patterns/assertion-patterns.d.ts +13 -0
  10. package/dist/patterns/assertion-patterns.d.ts.map +1 -0
  11. package/dist/patterns/assertion-patterns.js +903 -0
  12. package/dist/patterns/assertion-patterns.js.map +1 -0
  13. package/dist/patterns/capture-patterns.d.ts +21 -0
  14. package/dist/patterns/capture-patterns.d.ts.map +1 -0
  15. package/dist/patterns/capture-patterns.js +174 -0
  16. package/dist/patterns/capture-patterns.js.map +1 -0
  17. package/dist/patterns/focus-patterns.d.ts +22 -0
  18. package/dist/patterns/focus-patterns.d.ts.map +1 -0
  19. package/dist/patterns/focus-patterns.js +79 -0
  20. package/dist/patterns/focus-patterns.js.map +1 -0
  21. package/dist/patterns/form-patterns.d.ts +6 -0
  22. package/dist/patterns/form-patterns.d.ts.map +1 -0
  23. package/dist/patterns/form-patterns.js +239 -0
  24. package/dist/patterns/form-patterns.js.map +1 -0
  25. package/dist/patterns/interaction-patterns.d.ts +20 -0
  26. package/dist/patterns/interaction-patterns.d.ts.map +1 -0
  27. package/dist/patterns/interaction-patterns.js +633 -0
  28. package/dist/patterns/interaction-patterns.js.map +1 -0
  29. package/dist/patterns/keyboard-patterns.d.ts +7 -0
  30. package/dist/patterns/keyboard-patterns.d.ts.map +1 -0
  31. package/dist/patterns/keyboard-patterns.js +57 -0
  32. package/dist/patterns/keyboard-patterns.js.map +1 -0
  33. package/dist/patterns/navigation-patterns.d.ts +6 -0
  34. package/dist/patterns/navigation-patterns.d.ts.map +1 -0
  35. package/dist/patterns/navigation-patterns.js +185 -0
  36. package/dist/patterns/navigation-patterns.js.map +1 -0
  37. package/dist/patterns/scope-patterns.d.ts +7 -0
  38. package/dist/patterns/scope-patterns.d.ts.map +1 -0
  39. package/dist/patterns/scope-patterns.js +36 -0
  40. package/dist/patterns/scope-patterns.js.map +1 -0
  41. package/dist/patterns/scroll-patterns.d.ts +7 -0
  42. package/dist/patterns/scroll-patterns.d.ts.map +1 -0
  43. package/dist/patterns/scroll-patterns.js +25 -0
  44. package/dist/patterns/scroll-patterns.js.map +1 -0
  45. package/dist/patterns/setup-patterns.d.ts +6 -0
  46. package/dist/patterns/setup-patterns.d.ts.map +1 -0
  47. package/dist/patterns/setup-patterns.js +75 -0
  48. package/dist/patterns/setup-patterns.js.map +1 -0
  49. package/dist/patterns/storage-patterns.d.ts +26 -0
  50. package/dist/patterns/storage-patterns.d.ts.map +1 -0
  51. package/dist/patterns/storage-patterns.js +142 -0
  52. package/dist/patterns/storage-patterns.js.map +1 -0
  53. package/dist/patterns/table-pagination-patterns.d.ts +42 -0
  54. package/dist/patterns/table-pagination-patterns.d.ts.map +1 -0
  55. package/dist/patterns/table-pagination-patterns.js +93 -0
  56. package/dist/patterns/table-pagination-patterns.js.map +1 -0
  57. package/dist/patterns/table-patterns.d.ts +19 -0
  58. package/dist/patterns/table-patterns.d.ts.map +1 -0
  59. package/dist/patterns/table-patterns.js +594 -0
  60. package/dist/patterns/table-patterns.js.map +1 -0
  61. package/dist/trace-identity/aria-snapshot-head.d.ts +23 -0
  62. package/dist/trace-identity/aria-snapshot-head.d.ts.map +1 -0
  63. package/dist/trace-identity/aria-snapshot-head.js +26 -0
  64. package/dist/trace-identity/aria-snapshot-head.js.map +1 -0
  65. package/dist/trace-identity/playwright-identity-resolver.d.ts +10 -0
  66. package/dist/trace-identity/playwright-identity-resolver.d.ts.map +1 -0
  67. package/dist/trace-identity/playwright-identity-resolver.js +130 -0
  68. package/dist/trace-identity/playwright-identity-resolver.js.map +1 -0
  69. package/dist/trace-identity/trace-run-record-reporter.d.ts +50 -0
  70. package/dist/trace-identity/trace-run-record-reporter.d.ts.map +1 -0
  71. package/dist/trace-identity/trace-run-record-reporter.js +146 -0
  72. package/dist/trace-identity/trace-run-record-reporter.js.map +1 -0
  73. package/dist/utils/column-header.d.ts +37 -0
  74. package/dist/utils/column-header.d.ts.map +1 -0
  75. package/dist/utils/column-header.js +46 -0
  76. package/dist/utils/column-header.js.map +1 -0
  77. package/dist/utils/row-index.d.ts +18 -0
  78. package/dist/utils/row-index.d.ts.map +1 -0
  79. package/dist/utils/row-index.js +39 -0
  80. package/dist/utils/row-index.js.map +1 -0
  81. package/dist/utils/url-path-regex.d.ts +45 -0
  82. package/dist/utils/url-path-regex.d.ts.map +1 -0
  83. package/dist/utils/url-path-regex.js +68 -0
  84. package/dist/utils/url-path-regex.js.map +1 -0
  85. package/package.json +9 -3
  86. package/src/index.ts +5 -0
  87. package/src/patterns/assertion-patterns.ts +10 -88
  88. package/src/patterns/form-patterns.ts +2 -47
  89. package/src/patterns/table-patterns.ts +3 -15
  90. package/src/trace-identity/aria-snapshot-head.ts +33 -0
  91. package/src/trace-identity/playwright-identity-resolver.ts +123 -0
  92. package/src/trace-identity/trace-run-record-reporter.ts +131 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interaction-patterns.js","sourceRoot":"","sources":["../../src/patterns/interaction-patterns.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Keyboard Patterns
3
+ * Handles: press Key key, press Key on [Target] type
4
+ */
5
+ import { StepPattern } from '@sun-asterisk/sungen';
6
+ export declare const keyboardPatterns: StepPattern[];
7
+ //# sourceMappingURL=keyboard-patterns.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyboard-patterns.d.ts","sourceRoot":"","sources":["../../src/patterns/keyboard-patterns.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,eAAO,MAAM,gBAAgB,EAAE,WAAW,EAqDzC,CAAC"}
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ /**
3
+ * Keyboard Patterns
4
+ * Handles: press Key key, press Key on [Target] type
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.keyboardPatterns = void 0;
8
+ exports.keyboardPatterns = [
9
+ {
10
+ name: 'press-key-global',
11
+ matcher: (step) => {
12
+ const text = step.text.toLowerCase();
13
+ // Matchers see bracket refs MASKED ([Enter] → [~]), so the bracketed key form
14
+ // the docs teach ("press [Enter] key") must be accepted as [~] — plain \w+ made
15
+ // it fall through to a // TODO no-op.
16
+ return /\bpress(?:es)?\s+(?:\w+|\[~\])\s+key\b/.test(text) && !text.includes(' on ');
17
+ },
18
+ resolver: (step, context) => {
19
+ // Resolver reads the ORIGINAL text: "press Escape key" / "press [Enter] key" → key name.
20
+ // A bracketed key is taken WHOLE — "[Arrow Down]" must not degrade to the 'Enter'
21
+ // default (a silently wrong key); spaces collapse to the Playwright spelling
22
+ // (ArrowDown), and anything else (chords like Control+A) passes through so an
23
+ // invalid name fails loudly at runtime instead of green-and-wrong at compile.
24
+ const match = step.text.match(/press(?:es)?\s+(?:\[([^\]]+)\]|(\w+))\s+key/i);
25
+ const key = match ? (match[1] ?? match[2]).trim().replace(/\s+/g, '') : 'Enter';
26
+ // "press Tab key 5 times" — without this the count silently compiled to ONE press.
27
+ const times = step.text.match(/\bkey\s+(\d+)\s+times?\b/i);
28
+ const repeat = times ? parseInt(times[1], 10) : 0;
29
+ return {
30
+ templateName: 'keyboard-global-action',
31
+ data: { key, repeat: repeat > 1 ? repeat : undefined },
32
+ comment: repeat > 1 ? `Press ${key} key ${repeat} times` : `Press ${key} key`,
33
+ };
34
+ },
35
+ priority: 12,
36
+ },
37
+ {
38
+ name: 'press-key-on-element',
39
+ matcher: (step) => {
40
+ const text = step.text.toLowerCase();
41
+ return /\bpress(?:es)?\s+\w+\s+on\b/.test(text) && !!step.selectorRef;
42
+ },
43
+ resolver: (step, context) => {
44
+ // Extract key: "User press Enter on [Search] field" → "Enter"
45
+ const match = step.text.match(/press(?:es)?\s+(\w+)\s+on/i);
46
+ const key = match ? match[1] : 'Enter';
47
+ const resolved = context.selectorResolver.resolveSelector(step.selectorRef, context.featureName, step.elementType, step.nth);
48
+ return {
49
+ templateName: 'press-action',
50
+ data: { ...resolved, key },
51
+ comment: `Press ${key} on ${step.selectorRef}`,
52
+ };
53
+ },
54
+ priority: 12,
55
+ },
56
+ ];
57
+ //# sourceMappingURL=keyboard-patterns.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyboard-patterns.js","sourceRoot":"","sources":["../../src/patterns/keyboard-patterns.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAIU,QAAA,gBAAgB,GAAkB;IAC7C;QACE,IAAI,EAAE,kBAAkB;QACxB,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YAChB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACrC,8EAA8E;YAC9E,gFAAgF;YAChF,sCAAsC;YACtC,OAAO,wCAAwC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACvF,CAAC;QACD,QAAQ,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE;YAC1B,yFAAyF;YACzF,kFAAkF;YAClF,6EAA6E;YAC7E,8EAA8E;YAC9E,8EAA8E;YAC9E,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;YAC9E,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YAChF,mFAAmF;YACnF,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;YAC3D,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAElD,OAAO;gBACL,YAAY,EAAE,wBAAwB;gBACtC,IAAI,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAAE;gBACtD,OAAO,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,QAAQ,MAAM,QAAQ,CAAC,CAAC,CAAC,SAAS,GAAG,MAAM;aAC9E,CAAC;QACJ,CAAC;QACD,QAAQ,EAAE,EAAE;KACb;IACD;QACE,IAAI,EAAE,sBAAsB;QAC5B,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YAChB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACrC,OAAO,6BAA6B,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;QACxE,CAAC;QACD,QAAQ,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE;YAC1B,8DAA8D;YAC9D,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;YAC5D,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YAEvC,MAAM,QAAQ,GAAG,OAAO,CAAC,gBAAgB,CAAC,eAAe,CACvD,IAAI,CAAC,WAAY,EAAE,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,CACnE,CAAC;YAEF,OAAO;gBACL,YAAY,EAAE,cAAc;gBAC5B,IAAI,EAAE,EAAE,GAAG,QAAQ,EAAE,GAAG,EAAE;gBAC1B,OAAO,EAAE,SAAS,GAAG,OAAO,IAAI,CAAC,WAAW,EAAE;aAC/C,CAAC;QACJ,CAAC;QACD,QAAQ,EAAE,EAAE;KACb;CACF,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { StepPattern } from '@sun-asterisk/sungen';
2
+ /**
3
+ * Navigation patterns: goto, navigate, open page
4
+ */
5
+ export declare const navigationPatterns: StepPattern[];
6
+ //# sourceMappingURL=navigation-patterns.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigation-patterns.d.ts","sourceRoot":"","sources":["../../src/patterns/navigation-patterns.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AA2BnD;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,WAAW,EAsK3C,CAAC"}
@@ -0,0 +1,185 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.navigationPatterns = void 0;
4
+ const sungen_1 = require("@sun-asterisk/sungen");
5
+ const url_path_regex_1 = require("../utils/url-path-regex");
6
+ /**
7
+ * `is on` names a NAVIGATION only for a page — or for an untyped / data-bound reference, the
8
+ * legacy `is on {{route}}` form kept working here. `is on [X] <any other type>` means "the user
9
+ * is AT X", a state inside the current page, and must not reach this pattern: its Given/When
10
+ * branch emits page.goto(<the SCREEN's path>, ignoring [X]), which on a multi-step flow is a
11
+ * full reload that wipes the state the earlier steps built, and its Then branch asserts that
12
+ * same path, which on a single-URL SPA can never fail. Both were silent. The step-mapper now
13
+ * refuses those shapes outright; this guard keeps the pattern from claiming them meanwhile.
14
+ */
15
+ const isOnNavigation = (step) => {
16
+ const verb = /\bis\s+on\b/i.exec(step.text);
17
+ if (!verb)
18
+ return false;
19
+ // `see [Notification Toggle] is on` — the reference precedes the words, so they are a STATE
20
+ // being asserted, not the navigation verb. Claiming it here compiled a toggle assertion into
21
+ // a URL assertion that, on the screen's own path, could never fail.
22
+ const bracket = step.text.indexOf('[');
23
+ if (bracket !== -1 && bracket < verb.index)
24
+ return false;
25
+ if (!/\bis\s+on\s+\[/i.test(step.text))
26
+ return true; // no typed reference — legacy route form
27
+ // `screen` is the mobile analog of `page` (the appium adapter renders it as the app-launch
28
+ // no-op); keep it navigating so a dual-target feature compiles the same on both.
29
+ return !step.elementType || step.elementType === 'page' || step.elementType === 'screen';
30
+ };
31
+ /**
32
+ * Navigation patterns: goto, navigate, open page
33
+ */
34
+ exports.navigationPatterns = [
35
+ {
36
+ name: 'open-page-type',
37
+ matcher: (step) => (step.text.includes('open') || step.text.includes('opens') || step.text.includes('is on') || step.text.includes('navigate to')) &&
38
+ step.elementType === 'page',
39
+ resolver: (step, context) => {
40
+ const isThen = context.effectiveKeyword === 'Then';
41
+ // Cross-screen page refs (e.g. Then User is on [dashboard] page) won't be in the
42
+ // current screen's selectors. Fall back to /<ref>/ for assertion paths instead of
43
+ // the current featurePath, which would silently make the assertion always pass.
44
+ const pathFallback = isThen && step.selectorRef
45
+ ? `/${step.selectorRef}/`
46
+ : (context.featurePath || '/');
47
+ let path = pathFallback;
48
+ // The page entry's `query: any` (#748) — the twin of the `see [X] page` reading. These two
49
+ // resolvers have drifted apart twice; a rule one honours and the other does not is exactly
50
+ // that drift, so it is read here on the same line as the path.
51
+ let ignoreQuery = false;
52
+ if (step.selectorRef) {
53
+ try {
54
+ const resolved = context.selectorResolver.resolveSelector(step.selectorRef, context.featureName, step.elementType, step.nth);
55
+ // Only a `page`-type entry carries a URL in `value` — the same guard the `see [X] page`
56
+ // twin has carried since the key-collision fix (assertion-patterns.ts). Without it a
57
+ // colliding non-page entry (a `type: role` whose value is 'button') was used verbatim as
58
+ // the path, so the step asserted `^button/?$` — a wrong, specific path rather than the
59
+ // documented fallback. These two resolvers have drifted apart twice already; keep them
60
+ // spelling the same rule.
61
+ path = resolved.selectorType === 'page' ? (resolved.value || pathFallback) : pathFallback;
62
+ if (resolved.selectorType === 'page' && resolved.query === 'any')
63
+ ignoreQuery = true;
64
+ }
65
+ catch (error) {
66
+ path = pathFallback;
67
+ }
68
+ }
69
+ const finalPath = (0, sungen_1.resolvePathVariables)(path, context.scenarioSteps || []);
70
+ const isAbsoluteUrl = /^https?:\/\//.test(finalPath);
71
+ // `[X] page with {{v}}` — the query/fragment value parsed into dataRef (issue #464).
72
+ // Raw concat, no "smart" URL merging: the primary use case is injecting malformed
73
+ // query input, so the compiler must not sanitize what the test wants broken.
74
+ // Runtime mode resolves to a __SUNGEN_TD$…$__ marker → `path + testData.get(...)`.
75
+ let query = '';
76
+ if (step.dataRef) {
77
+ query = context.dataResolver.resolveData(step.dataRef, context.featureName);
78
+ }
79
+ const withSuffix = step.dataRef ? ` with ${step.dataRef}` : '';
80
+ // Then User is on [X] page — assert URL, don't navigate. The query is asserted
81
+ // separately (toHaveURL's regex stays compile-time escapable; the query value is
82
+ // runtime data with regex-special characters).
83
+ if (isThen) {
84
+ // Regex from the RAW path, not finalPath: resolvePathVariables rewrites `:id` into
85
+ // `${id}` for a goto template literal, which an assertion then escapes into
86
+ // `\/users\/\$\{id\}\/profile` — a regex no real URL can match. An assertion wants
87
+ // the wildcard the `see [X] page` twin already produced.
88
+ return {
89
+ templateName: 'route-assertion',
90
+ // `dataRef` rides along so a runtime failure names the test-data key (see the `see` twin).
91
+ // An absolute page value also carries a host pattern — see urlToPatternParts.
92
+ data: { ...(0, url_path_regex_1.urlToPatternParts)(path), query, dataRef: step.dataRef || '', ignoreQuery },
93
+ comment: step.selectorRef ? `Assert on ${step.selectorRef} page${withSuffix}` : `Assert page route`,
94
+ };
95
+ }
96
+ return {
97
+ templateName: 'navigation',
98
+ // `query` stays SEPARATE from `path` rather than concatenated here: in runtime-data mode
99
+ // the value is still a `__SUNGEN_TD$…$__` marker at this point, so the compiler cannot see
100
+ // whether it carries its own path. Deciding that is therefore a runtime job — the template
101
+ // hands both parts to joinPath(). Concatenating here is what produced `/vi/search/vi/search`.
102
+ data: { baseURL: isAbsoluteUrl ? undefined : context.baseURL, path: finalPath, query },
103
+ comment: step.selectorRef ? `Open ${step.selectorRef} page${withSuffix}` : `Navigate to page`,
104
+ };
105
+ },
106
+ priority: 16,
107
+ },
108
+ {
109
+ name: 'open-page',
110
+ matcher: (step) => (step.text.includes('open') || step.text.includes('opens')) &&
111
+ step.text.includes('page') &&
112
+ step.elementType !== 'page',
113
+ resolver: (step, context) => {
114
+ const pageMatch = step.text.match(/open[s]?\s+\[([^\]]+)\]/i) ||
115
+ step.text.match(/open[s]?\s+"([^"]+)"/i);
116
+ const pageName = pageMatch ? pageMatch[1] : 'page';
117
+ const inferredPath = (0, sungen_1.inferPath)(context.featurePath, {
118
+ featureName: context.featureName,
119
+ screenName: context.screenName,
120
+ });
121
+ const resolvedPath = (0, sungen_1.resolvePathVariables)(inferredPath, context.scenarioSteps || []);
122
+ const pathCode = (0, sungen_1.getPathCode)(resolvedPath);
123
+ const cleanPath = pathCode.replace(/^['`]|['`]$/g, '');
124
+ const isAbsoluteUrl = /^https?:\/\//.test(cleanPath);
125
+ return {
126
+ templateName: 'navigation',
127
+ data: { baseURL: isAbsoluteUrl ? undefined : context.baseURL, path: cleanPath },
128
+ comment: `Open ${pageName}`,
129
+ };
130
+ },
131
+ priority: 15,
132
+ },
133
+ {
134
+ name: 'navigate-to-route',
135
+ matcher: (step) => (step.text.includes('navigate to') || step.text.includes('navigates to') || isOnNavigation(step)) &&
136
+ !!(step.selectorRef || step.dataRef),
137
+ resolver: (step, context) => {
138
+ const route = step.selectorRef || step.dataRef;
139
+ const isThen = context.effectiveKeyword === 'Then';
140
+ const inferredPath = (0, sungen_1.inferPath)(context.featurePath, {
141
+ featureName: context.featureName,
142
+ screenName: context.screenName,
143
+ });
144
+ const resolvedPath = (0, sungen_1.resolvePathVariables)(inferredPath, context.scenarioSteps || []);
145
+ const pathCode = (0, sungen_1.getPathCode)(resolvedPath);
146
+ const cleanPath = pathCode.replace(/^['`]|['`]$/g, '');
147
+ const isAbsoluteUrl = /^https?:\/\//.test(cleanPath);
148
+ if (isThen) {
149
+ // Same rule as above — assert against the pre-resolution path so `:id` wildcards.
150
+ return {
151
+ templateName: 'route-assertion',
152
+ data: (0, url_path_regex_1.urlToPatternParts)(inferredPath),
153
+ comment: `Assert on ${route}`,
154
+ };
155
+ }
156
+ return {
157
+ templateName: 'navigation',
158
+ data: { baseURL: isAbsoluteUrl ? undefined : context.baseURL, path: cleanPath },
159
+ comment: `Navigate to ${route}`,
160
+ };
161
+ },
162
+ priority: 10,
163
+ },
164
+ {
165
+ name: 'route-assertion',
166
+ platforms: ['web'],
167
+ platformAlternative: 'a native app has no URL - assert a marker element on the destination screen (`Then User see [Header Title] is visible`) plus the origin marker `is hidden`',
168
+ matcher: (step) => (step.text.includes('should see route') || step.text.includes('should remain on')) &&
169
+ !!(step.selectorRef || step.dataRef),
170
+ resolver: (step, context) => {
171
+ const route = step.selectorRef || step.dataRef;
172
+ const inferredPath = (0, sungen_1.inferPath)(context.featurePath, {
173
+ featureName: context.featureName,
174
+ screenName: context.screenName,
175
+ });
176
+ return {
177
+ templateName: 'route-assertion',
178
+ data: (0, url_path_regex_1.urlToPatternParts)(inferredPath),
179
+ comment: `Assert current route is ${route}`,
180
+ };
181
+ },
182
+ priority: 10,
183
+ },
184
+ ];
185
+ //# sourceMappingURL=navigation-patterns.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigation-patterns.js","sourceRoot":"","sources":["../../src/patterns/navigation-patterns.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Scope Patterns
3
+ * Handles: switch to [Target] frame, switch to [main] frame
4
+ */
5
+ import { StepPattern } from '@sun-asterisk/sungen';
6
+ export declare const scopePatterns: StepPattern[];
7
+ //# sourceMappingURL=scope-patterns.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scope-patterns.d.ts","sourceRoot":"","sources":["../../src/patterns/scope-patterns.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,eAAO,MAAM,aAAa,EAAE,WAAW,EAgCtC,CAAC"}
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ /**
3
+ * Scope Patterns
4
+ * Handles: switch to [Target] frame, switch to [main] frame
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.scopePatterns = void 0;
8
+ exports.scopePatterns = [
9
+ {
10
+ name: 'switch-to-frame',
11
+ matcher: (step) => {
12
+ return /\bswitch(?:es)?\s+to\b/i.test(step.text) &&
13
+ (step.elementType === 'frame' || step.elementType === 'iframe');
14
+ },
15
+ resolver: (step, context) => {
16
+ const selectorRef = step.selectorRef || '';
17
+ // "switch to [main] frame" → reset to page context
18
+ if (selectorRef.toLowerCase() === 'main') {
19
+ return {
20
+ templateName: 'frame-exit-action',
21
+ data: {},
22
+ comment: 'Exit frame scope, return to main page',
23
+ };
24
+ }
25
+ // "switch to [Payment] frame" → enter frame scope
26
+ const resolved = context.selectorResolver.resolveSelector(selectorRef, context.featureName, 'frame', step.nth);
27
+ return {
28
+ templateName: 'frame-enter-action',
29
+ data: { ...resolved, frameName: selectorRef },
30
+ comment: `Switch to ${selectorRef} frame`,
31
+ };
32
+ },
33
+ priority: 11,
34
+ },
35
+ ];
36
+ //# sourceMappingURL=scope-patterns.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scope-patterns.js","sourceRoot":"","sources":["../../src/patterns/scope-patterns.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAIU,QAAA,aAAa,GAAkB;IAC1C;QACE,IAAI,EAAE,iBAAiB;QACvB,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YAChB,OAAO,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;gBACzC,CAAC,IAAI,CAAC,WAAW,KAAK,OAAO,IAAI,IAAI,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC;QACzE,CAAC;QACD,QAAQ,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE;YAC1B,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC;YAE3C,mDAAmD;YACnD,IAAI,WAAW,CAAC,WAAW,EAAE,KAAK,MAAM,EAAE,CAAC;gBACzC,OAAO;oBACL,YAAY,EAAE,mBAAmB;oBACjC,IAAI,EAAE,EAAE;oBACR,OAAO,EAAE,uCAAuC;iBACjD,CAAC;YACJ,CAAC;YAED,kDAAkD;YAClD,MAAM,QAAQ,GAAG,OAAO,CAAC,gBAAgB,CAAC,eAAe,CACvD,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,CACpD,CAAC;YAEF,OAAO;gBACL,YAAY,EAAE,oBAAoB;gBAClC,IAAI,EAAE,EAAE,GAAG,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE;gBAC7C,OAAO,EAAE,aAAa,WAAW,QAAQ;aAC1C,CAAC;QACJ,CAAC;QACD,QAAQ,EAAE,EAAE;KACb;CACF,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Scroll Patterns
3
+ * Handles: scroll to [Target] type
4
+ */
5
+ import { StepPattern } from '@sun-asterisk/sungen';
6
+ export declare const scrollPatterns: StepPattern[];
7
+ //# sourceMappingURL=scroll-patterns.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scroll-patterns.d.ts","sourceRoot":"","sources":["../../src/patterns/scroll-patterns.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,eAAO,MAAM,cAAc,EAAE,WAAW,EAmBvC,CAAC"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ /**
3
+ * Scroll Patterns
4
+ * Handles: scroll to [Target] type
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.scrollPatterns = void 0;
8
+ exports.scrollPatterns = [
9
+ {
10
+ name: 'scroll-to-element',
11
+ matcher: (step) => {
12
+ return /\bscroll(?:s)?\s+to\b/i.test(step.text) && !!step.selectorRef;
13
+ },
14
+ resolver: (step, context) => {
15
+ const resolved = context.selectorResolver.resolveSelector(step.selectorRef, context.featureName, step.elementType, step.nth);
16
+ return {
17
+ templateName: 'scroll-action',
18
+ data: { ...resolved },
19
+ comment: `Scroll to ${step.selectorRef}`,
20
+ };
21
+ },
22
+ priority: 8,
23
+ },
24
+ ];
25
+ //# sourceMappingURL=scroll-patterns.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scroll-patterns.js","sourceRoot":"","sources":["../../src/patterns/scroll-patterns.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAIU,QAAA,cAAc,GAAkB;IAC3C;QACE,IAAI,EAAE,mBAAmB;QACzB,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YAChB,OAAO,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;QACxE,CAAC;QACD,QAAQ,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE;YAC1B,MAAM,QAAQ,GAAG,OAAO,CAAC,gBAAgB,CAAC,eAAe,CACvD,IAAI,CAAC,WAAY,EAAE,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,CACnE,CAAC;YAEF,OAAO;gBACL,YAAY,EAAE,eAAe;gBAC7B,IAAI,EAAE,EAAE,GAAG,QAAQ,EAAE;gBACrB,OAAO,EAAE,aAAa,IAAI,CAAC,WAAW,EAAE;aACzC,CAAC;QACJ,CAAC;QACD,QAAQ,EAAE,CAAC;KACZ;CACF,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { StepPattern } from '@sun-asterisk/sungen';
2
+ /**
3
+ * Setup and precondition patterns: application setup, authentication state, etc.
4
+ */
5
+ export declare const setupPatterns: StepPattern[];
6
+ //# sourceMappingURL=setup-patterns.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-patterns.d.ts","sourceRoot":"","sources":["../../src/patterns/setup-patterns.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,WAAW,EAwEtC,CAAC"}
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.setupPatterns = void 0;
4
+ /**
5
+ * Setup and precondition patterns: application setup, authentication state, etc.
6
+ */
7
+ exports.setupPatterns = [
8
+ {
9
+ name: 'application-running',
10
+ matcher: (step) => step.text.includes('application is running') ||
11
+ step.text.includes('application running') ||
12
+ step.text.includes('app is running'),
13
+ resolver: (step, context) => ({
14
+ templateName: 'application-running',
15
+ data: {},
16
+ comment: `Setup: Application is running`,
17
+ }),
18
+ priority: 5,
19
+ },
20
+ {
21
+ name: 'user-not-logged-in',
22
+ matcher: (step) => step.text.includes('user is not logged in') ||
23
+ step.text.includes('not logged in') ||
24
+ step.text.includes('logged out'),
25
+ resolver: (step, context) => ({
26
+ templateName: 'clear-auth',
27
+ data: {},
28
+ comment: `Clear authentication state (ensure user is logged out)`,
29
+ }),
30
+ priority: 9,
31
+ },
32
+ {
33
+ name: 'user-logged-in',
34
+ matcher: (step) => (step.text.includes('user is logged in') ||
35
+ step.text.includes('logged in as')) &&
36
+ !step.text.includes('not logged in'),
37
+ resolver: (step, context) => {
38
+ const userRef = step.dataRef || 'valid_user';
39
+ return {
40
+ templateName: 'user-login-todo',
41
+ data: { userRef },
42
+ comment: `Setup: User logged in as ${userRef}`,
43
+ };
44
+ },
45
+ priority: 9,
46
+ },
47
+ {
48
+ name: 'clear-database',
49
+ // `Given database is empty` ESTABLISHES the state rather than asserting it — the clause is the
50
+ // directive, not a dropped assertion.
51
+ states: ['empty'],
52
+ matcher: (step) => step.text.includes('database is empty') ||
53
+ step.text.includes('database is cleared') ||
54
+ step.text.includes('clear database'),
55
+ resolver: (step, context) => ({
56
+ templateName: 'clear-database',
57
+ data: {},
58
+ comment: `Setup: Clear/reset database`,
59
+ }),
60
+ priority: 7,
61
+ },
62
+ {
63
+ name: 'browser-state-clean',
64
+ matcher: (step) => step.text.includes('clean browser state') ||
65
+ step.text.includes('fresh browser') ||
66
+ step.text.includes('new browser session'),
67
+ resolver: (step, context) => ({
68
+ templateName: 'clear-browser-state',
69
+ data: {},
70
+ comment: `Clear browser state (cookies, storage)`,
71
+ }),
72
+ priority: 8,
73
+ },
74
+ ];
75
+ //# sourceMappingURL=setup-patterns.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-patterns.js","sourceRoot":"","sources":["../../src/patterns/setup-patterns.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Browser-storage assertion patterns — read-only checks against
3
+ * localStorage/sessionStorage:
4
+ *
5
+ * Then User see [KEY] in local storage exists
6
+ * Then User see [KEY] in local storage does not exist
7
+ * Then User see [KEY] in local storage is not empty
8
+ * Then User see [KEY] in local storage has length {{n}}
9
+ * Then User see key matching "PATTERN" in local storage
10
+ * (+ the same five with `session storage`)
11
+ *
12
+ * Leak-safe by construction: the check runs INSIDE the browser and only a
13
+ * boolean crosses back — a failed assertion's Expected:/Received: shows
14
+ * true/false, never the stored value (tokens routinely live in these keys,
15
+ * and failure text is lifted verbatim into committed deliverables).
16
+ *
17
+ * `[KEY]` is NOT a selector reference — resolveSelector is never called.
18
+ * The bracket content is parsed here; an embedded `{{var}}` compiles to a
19
+ * testData.get() concatenation directly (same approach as the DB patterns'
20
+ * value binding), so `[{{code}}_ACCESS_TOKEN]` works without the marker
21
+ * pipeline. The parser stamps elementType="in" (first word after the
22
+ * bracket) — meaningless here, deliberately ignored.
23
+ */
24
+ import { StepPattern } from '@sun-asterisk/sungen';
25
+ export declare const storagePatterns: StepPattern[];
26
+ //# sourceMappingURL=storage-patterns.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage-patterns.d.ts","sourceRoot":"","sources":["../../src/patterns/storage-patterns.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AA+EnD,eAAO,MAAM,eAAe,EAAE,WAAW,EAqDxC,CAAC"}