@immense/vue-pom-generator 1.0.57 → 1.0.59

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 (52) hide show
  1. package/README.md +7 -19
  2. package/RELEASE_NOTES.md +76 -13
  3. package/class-generation/base-page.ts +6 -13
  4. package/class-generation/index.ts +226 -317
  5. package/class-generation/playwright-types.ts +1 -1
  6. package/click-instrumentation.ts +0 -4
  7. package/dist/class-generation/base-page.d.ts +1 -0
  8. package/dist/class-generation/base-page.d.ts.map +1 -1
  9. package/dist/class-generation/index.d.ts +2 -0
  10. package/dist/class-generation/index.d.ts.map +1 -1
  11. package/dist/class-generation/playwright-types.d.ts +1 -1
  12. package/dist/class-generation/playwright-types.d.ts.map +1 -1
  13. package/dist/click-instrumentation.d.ts +0 -1
  14. package/dist/click-instrumentation.d.ts.map +1 -1
  15. package/dist/index.cjs +1283 -1019
  16. package/dist/index.cjs.map +1 -1
  17. package/dist/index.mjs +1285 -1021
  18. package/dist/index.mjs.map +1 -1
  19. package/dist/method-generation.d.ts +4 -2
  20. package/dist/method-generation.d.ts.map +1 -1
  21. package/dist/playwright.config.d.ts.map +1 -1
  22. package/dist/plugin/create-vue-pom-generator-plugins.d.ts.map +1 -1
  23. package/dist/plugin/nuxt-discovery.d.ts.map +1 -1
  24. package/dist/plugin/resolved-generation-options.d.ts +33 -0
  25. package/dist/plugin/resolved-generation-options.d.ts.map +1 -0
  26. package/dist/plugin/resolved-injection-options.d.ts +27 -0
  27. package/dist/plugin/resolved-injection-options.d.ts.map +1 -0
  28. package/dist/plugin/support/build-plugin.d.ts +2 -29
  29. package/dist/plugin/support/build-plugin.d.ts.map +1 -1
  30. package/dist/plugin/support/dev-plugin.d.ts +2 -28
  31. package/dist/plugin/support/dev-plugin.d.ts.map +1 -1
  32. package/dist/plugin/support-plugins.d.ts +2 -32
  33. package/dist/plugin/support-plugins.d.ts.map +1 -1
  34. package/dist/plugin/types.d.ts +6 -23
  35. package/dist/plugin/types.d.ts.map +1 -1
  36. package/dist/plugin/vue-plugin.d.ts.map +1 -1
  37. package/dist/pom-params.d.ts +40 -0
  38. package/dist/pom-params.d.ts.map +1 -0
  39. package/dist/pom-patterns.d.ts +31 -0
  40. package/dist/pom-patterns.d.ts.map +1 -0
  41. package/dist/routing/to-directive.d.ts +21 -0
  42. package/dist/routing/to-directive.d.ts.map +1 -1
  43. package/dist/tests/base-page.test.d.ts +2 -0
  44. package/dist/tests/base-page.test.d.ts.map +1 -0
  45. package/dist/tests/resolved-injection-options.test.d.ts +2 -0
  46. package/dist/tests/resolved-injection-options.test.d.ts.map +1 -0
  47. package/dist/transform.d.ts +0 -1
  48. package/dist/transform.d.ts.map +1 -1
  49. package/dist/utils.d.ts +129 -63
  50. package/dist/utils.d.ts.map +1 -1
  51. package/package.json +6 -4
  52. package/sequence-diagram.md +6 -6
package/dist/utils.d.ts CHANGED
@@ -1,8 +1,11 @@
1
- import type { AttributeNode, DirectiveNode, ElementNode, TransformContext } from "@vue/compiler-core";
1
+ import type { AttributeNode, CompoundExpressionNode, DirectiveNode, ElementNode, SimpleExpressionNode, TransformContext } from "@vue/compiler-core";
2
2
  import type { TemplateLiteral } from "@babel/types";
3
+ import { type PomStringPattern } from "./pom-patterns";
4
+ import { type PomMethodSignature, type PomParameterSpec } from "./pom-params";
3
5
  export { isSimpleExpressionNode } from "./compiler/ast-guards";
4
6
  export type { RouterIntrospectionResult } from "./router-introspection";
5
- export { getRouteNameKeyFromToDirective, setResolveToComponentNameFn, setRouteNameToComponentNameMap, tryResolveToDirectiveTargetComponentName, } from "./routing/to-directive";
7
+ export { analyzeToDirectiveTarget, getRouteNameKeyFromToDirective, setResolveToComponentNameFn, setRouteNameToComponentNameMap, tryResolveToDirectiveTargetComponentName, } from "./routing/to-directive";
8
+ export type { RouteDirectiveTargetAnalysis } from "./routing/to-directive";
6
9
  export declare function upperFirst(value: string): string;
7
10
  export declare function isAsciiUppercaseLetterCode(code: number): boolean;
8
11
  export declare function isAsciiLowercaseLetterCode(code: number): boolean;
@@ -21,16 +24,38 @@ export interface NativeWrappersMap {
21
24
  inferred?: boolean;
22
25
  };
23
26
  }
27
+ export interface ParsedTemplateFragment {
28
+ source: string;
29
+ templateLiteral: TemplateLiteral;
30
+ }
24
31
  export type AttributeValue = {
25
32
  kind: "static";
26
33
  value: string;
27
34
  } | {
28
35
  kind: "template";
29
36
  template: string;
37
+ parsedTemplate: ParsedTemplateFragment;
30
38
  };
39
+ type VueExpressionNode = SimpleExpressionNode | CompoundExpressionNode;
40
+ type VueExpressionSourceView = "content" | "loc" | "compiled";
41
+ export interface ResolvedKeyInfo {
42
+ selectorFragment: string;
43
+ runtimeFragment: string;
44
+ rawExpression: string | null;
45
+ }
31
46
  export declare function staticAttributeValue(value: string): AttributeValue;
32
- export declare function templateAttributeValue(template: string): AttributeValue;
47
+ export declare function templateAttributeValue(template: string): Extract<AttributeValue, {
48
+ kind: "template";
49
+ }>;
33
50
  export declare function getAttributeValueText(value: AttributeValue): string;
51
+ /**
52
+ * Reads source text from a Vue compiler expression using the preferred view order.
53
+ *
54
+ * - `content`: original SIMPLE_EXPRESSION content
55
+ * - `loc`: author-written template source from `loc.source`
56
+ * - `compiled`: compiler-rewritten source from `stringifyExpression()`
57
+ */
58
+ export declare function getVueExpressionSource(expression: VueExpressionNode | null | undefined, ...preferredViews: VueExpressionSourceView[]): string;
34
59
  /**
35
60
  * Converts a string to PascalCase.
36
61
  *
@@ -73,14 +98,57 @@ declare function splitNullishCoalescingExpression(expr: string): string[];
73
98
  */
74
99
  export declare function nodeHasToDirective(node: ElementNode): DirectiveNode | undefined;
75
100
  /**
76
- * Gets the value placeholder for a :key directive
101
+ * Returns `true` when a template fragment already contains one or more `${...}` interpolations.
77
102
  *
78
- * Returns a placeholder string if the element has a :key directive, null otherwise
79
- * This is used to indicate where a unique value should be interpolated
103
+ * @example
104
+ * hasTemplateInterpolationExpressions("line-${item.id}")
105
+ * // => true
80
106
  *
81
- * @internal
107
+ * @example
108
+ * hasTemplateInterpolationExpressions("item.id")
109
+ * // => false
82
110
  */
83
- export declare function getKeyDirectiveValue(node: ElementNode, _context?: TransformContext | null): string | null;
111
+ export declare function hasTemplateInterpolationExpressions(fragment: string): boolean;
112
+ export interface InterpolatedTemplateFragment {
113
+ template: string;
114
+ rawExpression: string | null;
115
+ }
116
+ /**
117
+ * Normalizes a fragment into something safe to splice into a template literal.
118
+ *
119
+ * Raw expressions become `${...}` placeholders; fragments that already contain template
120
+ * interpolations are returned as-is.
121
+ *
122
+ * @example
123
+ * toInterpolatedTemplateFragment("item.id")
124
+ * // => { template: "${item.id}", rawExpression: "item.id" }
125
+ *
126
+ * @example
127
+ * toInterpolatedTemplateFragment("line-${item.id}")
128
+ * // => { template: "line-${item.id}", rawExpression: null }
129
+ */
130
+ export declare function toInterpolatedTemplateFragment(fragment: string | null): InterpolatedTemplateFragment | null;
131
+ /**
132
+ * Reconstructs a full template-literal expression from a template AttributeValue using its parsed quasis/expressions.
133
+ *
134
+ * @example
135
+ * const templateValue = templateAttributeValue("line-${item.id}");
136
+ * if (templateValue.kind === "template") {
137
+ * renderTemplateLiteralExpression(templateValue)
138
+ * }
139
+ * // => "`line-${item.id}`"
140
+ *
141
+ * @example
142
+ * const templateValue = templateAttributeValue("plain-text");
143
+ * if (templateValue.kind === "template") {
144
+ * renderTemplateLiteralExpression(templateValue)
145
+ * }
146
+ * // => "`plain-text`"
147
+ */
148
+ export declare function renderTemplateLiteralExpression(templateValue: Extract<AttributeValue, {
149
+ kind: "template";
150
+ }>): string;
151
+ export declare function getKeyDirectiveInfo(node: ElementNode): ResolvedKeyInfo | null;
84
152
  /**
85
153
  * Gets both v-model and :model-value directive values in a single pass
86
154
  * Consolidates the previous getVModelDirectiveValue and getModelValueValue helpers
@@ -102,12 +170,14 @@ export declare function getSelfClosingForDirectiveKeyAttrValue(node: ElementNode
102
170
  /**
103
171
  * Gets the id or name attribute value from a node
104
172
  *
105
- * Returns the identifier, converting dashes and underscores to PascalCase
106
- * Returns a placeholder if a dynamic :id is found
173
+ * Returns the identifier, converting dashes and underscores to PascalCase.
174
+ *
175
+ * Dynamic `:id` / `:name` bindings are intentionally ignored here because they are not stable
176
+ * semantic hints for generated POM member names.
107
177
  *
108
178
  * @internal
109
179
  */
110
- export declare function getIdOrName(node: ElementNode): string;
180
+ export declare function getStaticIdOrNameHint(node: ElementNode): string;
111
181
  /**
112
182
  * Checks if a node is contained within a template element that has slot scope data
113
183
  *
@@ -117,23 +187,8 @@ export declare function getIdOrName(node: ElementNode): string;
117
187
  * @internal
118
188
  */
119
189
  export declare function isNodeContainedInTemplateWithData(node: ElementNode, hierarchyMap: HierarchyMap): boolean;
120
- /**
121
- * Extracts a key placeholder from a parent <template> with slot scope data.
122
- *
123
- * If the node is within a slot that has scope variables (e.g. #item="{ data }"),
124
- * returns a placeholder derived from that scope.
125
- *
126
- * @internal
127
- */
128
- export declare function getContainedInSlotDataKeyValue(node: ElementNode, hierarchyMap: HierarchyMap): string | null;
129
- /**
130
- * Extracts the key value expression from a v-for directive on a parent element
131
- *
132
- * If the node is within a v-for that has a :key directive, returns the key expression.
133
- *
134
- * @internal
135
- */
136
- export declare function getContainedInVForDirectiveKeyValue(context: TransformContext, node: ElementNode, hierarchyMap: HierarchyMap): string | null;
190
+ export declare function getContainedInSlotDataKeyInfo(node: ElementNode, hierarchyMap: HierarchyMap): ResolvedKeyInfo | null;
191
+ export declare function getContainedInVForDirectiveKeyInfo(context: TransformContext, node: ElementNode, hierarchyMap: HierarchyMap): ResolvedKeyInfo | null;
137
192
  /**
138
193
  * If the current node is inside a v-for whose iterable is a static array literal,
139
194
  * returns the iterable's *string literal values*.
@@ -228,11 +283,18 @@ export interface ExistingElementDataTestIdInfo {
228
283
  isStaticLiteral: boolean;
229
284
  /** When the binding can be preserved as a one-slot template, the unwrapped template text (without backticks). */
230
285
  template?: string;
286
+ /** Parsed template metadata for preserve-safe template ids. */
287
+ parsedTemplate?: ParsedTemplateFragment;
231
288
  /** Number of interpolations in the template literal, if known. */
232
289
  templateExpressionCount?: number;
233
290
  /** For non-template dynamic bindings, the raw expression string (identifier/call/etc). */
234
291
  rawExpression?: string;
235
292
  }
293
+ export interface ResolvedDataTestIdValues {
294
+ selectorValue: AttributeValue;
295
+ runtimeValue: AttributeValue;
296
+ fromExisting: boolean;
297
+ }
236
298
  /**
237
299
  * Extracts existing data-testid info from an element.
238
300
  *
@@ -247,17 +309,20 @@ export interface ExistingElementDataTestIdInfo {
247
309
  export declare function tryGetExistingElementDataTestId(node: ElementNode, attributeName?: string): ExistingElementDataTestIdInfo | null;
248
310
  declare function safeMethodNameFromParts(parts: string[]): string;
249
311
  /**
250
- * Replaces any `${...}` interpolation in a template string with the stable placeholder `${key}`.
312
+ * Replaces any `${...}` interpolation in a template string with the stable POM placeholder `${key}`.
251
313
  *
252
- * IMPORTANT: This function does NOT attempt to parse the template expression(s). It is a
253
- * best-effort scanner that preserves literal text and normalizes interpolation slots.
314
+ * This is only for the generated POM selector shape. Runtime/test-id generation keeps the real
315
+ * interpolation expressions; the POM layer just needs to know that a keyed slot exists and where
316
+ * it sits relative to the surrounding literal text.
254
317
  */
255
- declare function replaceAllTemplateExpressionsWithKey(template: string): string;
318
+ declare function toPomKeyPattern(templateValue: Extract<AttributeValue, {
319
+ kind: "template";
320
+ }>): string;
256
321
  export declare const __internal: {
257
322
  isSimpleScopeIdentifier: typeof isSimpleScopeIdentifier;
258
323
  safeMethodNameFromParts: typeof safeMethodNameFromParts;
259
324
  splitNullishCoalescingExpression: typeof splitNullishCoalescingExpression;
260
- replaceAllTemplateExpressionsWithKey: typeof replaceAllTemplateExpressionsWithKey;
325
+ toPomKeyPattern: typeof toPomKeyPattern;
261
326
  };
262
327
  /**
263
328
  * Resolve/apply a data-testid for an element, record it into dependencies, and append generated POM method content.
@@ -274,12 +339,11 @@ export declare function applyResolvedDataTestId(args: {
274
339
  generatedMethodContentByComponent: Map<string, Set<string>>;
275
340
  nativeRole: string;
276
341
  preferredGeneratedValue: AttributeValue;
277
- bestKeyPlaceholder: string | null;
278
- /** Optional variable name that must be present in a placeholder (e.g. "data" from slot scope). */
279
- bestKeyVariable?: string | null;
342
+ preferredRuntimeValue?: AttributeValue;
343
+ keyInfo: ResolvedKeyInfo | null;
280
344
  /** Optional enumerable key values (e.g. derived from v-for="item in ['One','Two']"). */
281
345
  keyValuesOverride?: string[] | null;
282
- entryOverrides?: Partial<IDataTestId>;
346
+ entryOverrides?: DataTestIdEntryOverrides;
283
347
  /**
284
348
  * Semantic naming hint used for generating method/property names.
285
349
  *
@@ -308,23 +372,23 @@ export declare function applyResolvedDataTestId(args: {
308
372
  /**
309
373
  * How to handle an author-provided existing test id attribute when we encounter one.
310
374
  *
311
- * - "preserve": keep the existing value (default)
375
+ * - "error": throw to force cleanup/migration (default)
376
+ * - "preserve": keep the existing value
312
377
  * - "overwrite": replace it with the generated value
313
- * - "error": throw to force cleanup/migration
314
378
  */
315
379
  existingIdBehavior?: "preserve" | "overwrite" | "error";
316
380
  /**
317
381
  * Controls what happens when the generator would emit duplicate POM member names within the same class.
318
- * - "error": throw and fail compilation
382
+ * - "error": throw and fail compilation (default)
319
383
  * - "warn": warn and append a suffix
320
- * - "suffix": append a suffix silently (default)
384
+ * - "suffix": append a suffix silently
321
385
  */
322
386
  nameCollisionBehavior?: "error" | "warn" | "suffix";
323
387
  /** Optional warning sink (typically the shared generator logger). */
324
388
  warn?: (message: string) => void;
325
- }): void;
389
+ }): ResolvedDataTestIdValues;
326
390
  export interface IDataTestId {
327
- value: string;
391
+ selectorValue: PomStringPattern;
328
392
  /** Optional parsed/constructed template literal for AST-based formatting in codegen. */
329
393
  templateLiteral?: TemplateLiteral;
330
394
  /** When the element is a router-link-like navigation, the resolved target page class name (e.g. TenantDetailsPage). */
@@ -337,12 +401,17 @@ export interface IDataTestId {
337
401
  */
338
402
  pom?: PomPrimarySpec;
339
403
  }
404
+ export interface DataTestIdEntryOverrides {
405
+ selectorValue?: PomStringPattern;
406
+ templateLiteral?: TemplateLiteral;
407
+ targetPageObjectModelClass?: string;
408
+ }
340
409
  /**
341
410
  * Structured representation of a generated element for POM emission.
342
411
  *
343
- * - `formattedDataTestId` may contain the placeholder `${key}` when keyed.
344
- * - `params` is TypeScript-flavored today because TS is our reference emitter;
345
- * C# emission maps these params to C# types.
412
+ * - `selector` carries both the rendered selector text and whether it is static or parameterized.
413
+ * - `parameters` are TypeScript-flavored today because TS is our reference emitter;
414
+ * C# emission maps these parameters to C# types.
346
415
  */
347
416
  export interface PomPrimarySpec {
348
417
  nativeRole: NativeRole;
@@ -350,14 +419,14 @@ export interface PomPrimarySpec {
350
419
  methodName: string;
351
420
  /** Optional override for the generated locator getter name (used for edge-case collision avoidance). */
352
421
  getterNameOverride?: string;
353
- /** Test id pattern used by generated POM methods (may include `${key}` placeholder). */
354
- formattedDataTestId: string;
355
- /** Additional test id patterns that should be treated as equivalent to formattedDataTestId (merge-by-action). */
356
- alternateFormattedDataTestIds?: string[];
422
+ /** Test id pattern used by generated POM methods. Parameterized patterns still render with `${key}`. */
423
+ selector: PomStringPattern;
424
+ /** Additional selector patterns that should be treated as equivalent to `selector` (merge-by-action). */
425
+ alternateSelectors?: PomStringPattern[];
357
426
  /** Optional key used to decide whether distinct elements should be merged into one POM member. */
358
427
  mergeKey?: string;
359
- /** TypeScript param blocks used by the TS emitter (and signature metadata). */
360
- params: Record<string, string>;
428
+ /** Structured method parameters used by emitters and signature metadata. */
429
+ parameters: PomParameterSpec[];
361
430
  /** Optional enum values for key when derived from a static v-for list. */
362
431
  keyValuesOverride?: string[] | null;
363
432
  /** When false, emitters should NOT emit the primary method/locator for this entry. */
@@ -365,14 +434,14 @@ export interface PomPrimarySpec {
365
434
  }
366
435
  export type PomSelectorSpec = {
367
436
  kind: "testId";
368
- /** Static or keyed test id; keyed uses `${key}` placeholder. */
369
- formattedDataTestId: string;
437
+ /** Static or parameterized test id; parameterized patterns render with `${key}`. */
438
+ testId: PomStringPattern;
370
439
  } | {
371
440
  kind: "withinTestIdByLabel";
372
441
  /** Wrapper/root test id to scope the label search under. */
373
- rootFormattedDataTestId: string;
374
- /** Visible label text; may include `${value}` placeholder for dynamic methods. */
375
- formattedLabel: string;
442
+ rootTestId: PomStringPattern;
443
+ /** Visible label text; parameterized labels may contain `${value}`. */
444
+ label: PomStringPattern;
376
445
  exact?: boolean;
377
446
  };
378
447
  /**
@@ -388,7 +457,7 @@ export interface PomExtraClickMethodSpec {
388
457
  selector: PomSelectorSpec;
389
458
  /** Optional fixed key to substitute into `${key}` in the method body. */
390
459
  keyLiteral?: string;
391
- params: Record<string, string>;
460
+ parameters: PomParameterSpec[];
392
461
  }
393
462
  export interface IComponentDependencies {
394
463
  filePath: string;
@@ -411,13 +480,10 @@ export interface IComponentDependencies {
411
480
  * without re-parsing the generated TypeScript.
412
481
  *
413
482
  * - key: method name
414
- * - value: { params, argNames } when the signature is known and consistent
483
+ * - value: structured parameters when the signature is known and consistent
415
484
  * null when multiple distinct signatures were observed for the same name
416
485
  */
417
- generatedMethods?: Map<string, {
418
- params: string;
419
- argNames: string[];
420
- } | null>;
486
+ generatedMethods?: Map<string, PomMethodSignature | null>;
421
487
  isView?: boolean;
422
488
  /**
423
489
  * Extra methods emitted for this component/view (beyond the primary per-element methods).
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,sBAAsB,EACtB,aAAa,EACb,WAAW,EACX,oBAAoB,EAEpB,gBAAgB,EACjB,MAAM,oBAAoB,CAAC;AAO5B,OAAO,KAAK,EAOV,eAAe,EAGhB,MAAM,cAAc,CAAC;AA8BtB,OAAO,EAAuE,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAC5H,OAAO,EAOL,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACtB,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,YAAY,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,EACL,wBAAwB,EACxB,8BAA8B,EAC9B,2BAA2B,EAC3B,8BAA8B,EAC9B,wCAAwC,GACzC,MAAM,wBAAwB,CAAC;AAChC,YAAY,EAAE,4BAA4B,EAAE,MAAM,wBAAwB,CAAC;AAY3E,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAKhD;AAED,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEhE;AAED,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEhE;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEtD;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE7D;AAED,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAA;AAE7G,MAAM,MAAM,KAAK,GAAG,WAAW,CAAC;AAChC,MAAM,MAAM,MAAM,GAAG,WAAW,GAAG,IAAI,CAAC;AACxC,MAAM,MAAM,YAAY,GAAG,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;AAC7C,MAAM,WAAW,iBAAiB;IAChC,CAAC,SAAS,EAAE,MAAM,GAAG;QACnB,IAAI,EAAE,UAAU,CAAA;QAChB,cAAc,CAAC,EAAE,MAAM,CAAA;QACvB,8BAA8B,CAAC,EAAE,OAAO,CAAA;QACxC,QAAQ,CAAC,EAAE,OAAO,CAAA;KACnB,CAAA;CACF;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,eAAe,CAAC;CAClC;AAED,MAAM,MAAM,cAAc,GACtB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,sBAAsB,CAAA;CAAE,CAAC;AAEnF,KAAK,iBAAiB,GAAG,oBAAoB,GAAG,sBAAsB,CAAC;AACvE,KAAK,uBAAuB,GAAG,SAAS,GAAG,KAAK,GAAG,UAAU,CAAC;AAG9D,MAAM,WAAW,eAAe;IAC9B,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,CAElE;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC,CAOtG;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,CAEnE;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,iBAAiB,GAAG,IAAI,GAAG,SAAS,EAChD,GAAG,cAAc,EAAE,uBAAuB,EAAE,GAC3C,MAAM,CAkCR;AAiED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CA+BhD;AAkDD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,WAAW,GAAG,aAAa,GAAG,SAAS,CAEjF;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAEhE;AA8BD;;;;;GAKG;AACH,iBAAS,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAYvD;AA+BD;;;;GAIG;AACH,iBAAS,gCAAgC,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CA2BhE;AAuJD;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,WAAW,GAAG,aAAa,GAAG,SAAS,CAS/E;AAuLD;;;;;;;;;;GAUG;AACH,wBAAgB,mCAAmC,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE7E;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,8BAA8B,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,4BAA4B,GAAG,IAAI,CAa3G;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,+BAA+B,CAAC,aAAa,EAAE,OAAO,CAAC,cAAc,EAAE;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC,GAAG,MAAM,CA6BpH;AAoBD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,WAAW,GAAG,eAAe,GAAG,IAAI,CAS7E;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,WAAW,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAwBtG;AAED;;;;;;GAMG;AACH,wBAAgB,sCAAsC,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,GAAG,IAAI,CAUvF;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CA6B/D;AAKD;;;;;;;GAOG;AACH,wBAAgB,iCAAiC,CAAC,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,GAAG,OAAO,CAYxG;AAED,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,GAAG,eAAe,GAAG,IAAI,CAYnH;AAED,wBAAgB,kCAAkC,CAAC,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,GAAG,eAAe,GAAG,IAAI,CAkBnJ;AAED;;;;;;GAMG;AACH,wBAAgB,8CAA8C,CAC5D,OAAO,EAAE,gBAAgB,EACzB,KAAK,EAAE,WAAW,EAClB,aAAa,EAAE,YAAY,GAC1B,MAAM,EAAE,GAAG,IAAI,CAsFjB;AAMD;;;;;;;;;;;GAWG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,GAAG,IAAI,CAE1E;AAED,MAAM,WAAW,oBAAoB;IACnC,6FAA6F;IAC7F,gBAAgB,EAAE,MAAM,CAAC;IACzB,0EAA0E;IAC1E,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,WAAW,GAAG,oBAAoB,GAAG,IAAI,CAuYvF;AAED,MAAM,WAAW,0BAA0B;IACzC,kFAAkF;IAClF,mBAAmB,EAAE,cAAc,GAAG,IAAI,CAAC;IAC3C,qFAAqF;IACrF,2BAA2B,EAAE,cAAc,GAAG,IAAI,CAAC;IAEnD,6FAA6F;IAC7F,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC;AAED;;;;;;;;GAQG;AACH,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE,WAAW,EACjB,aAAa,EAAE,MAAM,EACrB,cAAc,EAAE,iBAAiB,GAChC,0BAA0B,CAkE5B;AAuCD,wBAAgB,6BAA6B,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,iBAAiB,GAAG,cAAc,GAAG,IAAI,CAwBnO;AAKD,wBAAgB,aAAa,CAAC,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE,iBAAiB,GAAG,MAAM,CAQ1F;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,GAAG,IAAI,CAgDlF;AAED,wBAAgB,mBAAmB,CAAC,aAAa,EAAE,MAAM,EAAE,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,aAAa,EAAE,MAAM,QAK3H;AAMD,wBAAgB,8BAA8B,CAC5C,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,gBAAgB,EAC1B,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,cAAc,CAAC,EAAE,aAAa,EAC9B,QAAQ,GAAE;IAAE,aAAa,CAAC,EAAE,MAAM,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAA;CAAO,GAClE,MAAM,CAuCR;AAiYD,wBAAgB,YAAY,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CAoBtD;AAGD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,GAAG,aAAa,GAAG,aAAa,GAAG,IAAI,CAMrH;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,WAAW,GAAG,aAAa,GAAG,aAAa,GAAG,IAAI,CAElG;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,WAAW,EACpB,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,cAAc,GACpB,IAAI,CAkDN;AAED,MAAM,WAAW,6BAA6B;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,gGAAgG;IAChG,SAAS,EAAE,OAAO,CAAC;IACnB,sEAAsE;IACtE,eAAe,EAAE,OAAO,CAAC;IAEzB,iHAAiH;IACjH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+DAA+D;IAC/D,cAAc,CAAC,EAAE,sBAAsB,CAAC;IACxC,kEAAkE;IAClE,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,0FAA0F;IAC1F,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,wBAAwB;IACvC,aAAa,EAAE,cAAc,CAAC;IAC9B,YAAY,EAAE,cAAc,CAAC;IAC7B,YAAY,EAAE,OAAO,CAAC;CACvB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,WAAW,EAAE,aAAa,GAAE,MAAsB,GAAG,6BAA6B,GAAG,IAAI,CA6E9I;AA2CD,iBAAS,uBAAuB,CAAC,KAAK,EAAE,MAAM,EAAE,UA2B/C;AAED;;;;;;GAMG;AACH,iBAAS,eAAe,CAAC,aAAa,EAAE,OAAO,CAAC,cAAc,EAAE;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC,GAAG,MAAM,CAU7F;AAGD,eAAO,MAAM,UAAU;;;;;CAKtB,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE;IAC5C,OAAO,EAAE,WAAW,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,OAAO,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAClC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,sBAAsB,CAAC;IACrC,iCAAiC,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5D,UAAU,EAAE,MAAM,CAAC;IACnB,uBAAuB,EAAE,cAAc,CAAC;IACxC,qBAAqB,CAAC,EAAE,cAAc,CAAC;IACvC,OAAO,EAAE,eAAe,GAAG,IAAI,CAAC;IAChC,wFAAwF;IACxF,iBAAiB,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACpC,cAAc,CAAC,EAAE,wBAAwB,CAAC;IAC1C;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;;;OAKG;IACH,0BAA0B,CAAC,EAAE,MAAM,EAAE,CAAC;IAEtC;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,gFAAgF;IAChF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;;;OAMG;IACH,kBAAkB,CAAC,EAAE,UAAU,GAAG,WAAW,GAAG,OAAO,CAAC;IAExD;;;;;OAKG;IACH,qBAAqB,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;IAEpD,qEAAqE;IACrE,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAClC,GAAG,wBAAwB,CAi7B3B;AAED,MAAM,WAAW,WAAW;IAC1B,aAAa,EAAE,gBAAgB,CAAC;IAEhC,wFAAwF;IACxF,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,uHAAuH;IACvH,0BAA0B,CAAC,EAAE,MAAM,CAAC;IAEpC;;;;;OAKG;IACH,GAAG,CAAC,EAAE,cAAc,CAAC;CACtB;AAED,MAAM,WAAW,wBAAwB;IACvC,aAAa,CAAC,EAAE,gBAAgB,CAAC;IACjC,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,0BAA0B,CAAC,EAAE,MAAM,CAAC;CACrC;AAED;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,UAAU,CAAC;IACvB,4EAA4E;IAC5E,UAAU,EAAE,MAAM,CAAC;IACnB,wGAAwG;IACxG,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,wGAAwG;IACxG,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,yGAAyG;IACzG,kBAAkB,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAExC,kGAAkG;IAClG,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4EAA4E;IAC5E,UAAU,EAAE,gBAAgB,EAAE,CAAC;IAC/B,0EAA0E;IAC1E,iBAAiB,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAEpC,sFAAsF;IACtF,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,MAAM,eAAe,GACvB;IACA,IAAI,EAAE,QAAQ,CAAC;IACf,oFAAoF;IACpF,MAAM,EAAE,gBAAgB,CAAC;CAC1B,GACC;IACA,IAAI,EAAE,qBAAqB,CAAC;IAC5B,4DAA4D;IAC5D,UAAU,EAAE,gBAAgB,CAAC;IAC7B,uEAAuE;IACvE,KAAK,EAAE,gBAAgB,CAAC;IACxB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEJ;;;;;;GAMG;AACH,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,eAAe,CAAC;IAC1B,yEAAyE;IACzE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,gBAAgB,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,oBAAoB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAClC;;;;;OAKG;IACH,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC9B,aAAa,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;IAChC,sFAAsF;IACtF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;;;;;;;OAUG;IACH,gBAAgB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI,CAAC,CAAC;IAC1D,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB;;;OAGG;IACH,eAAe,CAAC,EAAE,uBAAuB,EAAE,CAAC;IAE5C;;;;;OAKG;IACH,sBAAsB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAErC;;;OAGG;IACH,wBAAwB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAEpD,oFAAoF;IACpF,wBAAwB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;CACrD"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@immense/vue-pom-generator",
3
- "version": "1.0.57",
3
+ "version": "1.0.59",
4
4
  "description": "Injects data-testid attributes for all interactive elements and generates page object models for every page.",
5
5
  "type": "module",
6
6
  "repository": {
@@ -61,6 +61,7 @@
61
61
  "@vue/compiler-dom": ">=3.5",
62
62
  "@vue/compiler-sfc": ">=3.5",
63
63
  "eslint": ">=9",
64
+ "playwright": "1.59.1",
64
65
  "vite": "^5 || ^6 || ^7"
65
66
  },
66
67
  "peerDependenciesMeta": {
@@ -72,11 +73,11 @@
72
73
  "ts-morph": "^27.0.2"
73
74
  },
74
75
  "devDependencies": {
75
- "@babel/types": "^7.28.5",
76
76
  "@antfu/eslint-config": "5.3.0",
77
- "@github/copilot-sdk": "^0.1.8",
77
+ "@babel/types": "^7.28.5",
78
78
  "@floating-ui/core": "^1.7.5",
79
- "@playwright/test": "^1.57.0",
79
+ "@github/copilot-sdk": "^0.1.8",
80
+ "@playwright/test": "1.59.1",
80
81
  "@types/jsdom": "^27.0.0",
81
82
  "@types/node": "^24.1.0",
82
83
  "@vitest/coverage-v8": "^4.0.16",
@@ -84,6 +85,7 @@
84
85
  "eslint": "^9.27.0",
85
86
  "jsdom": "^27.4.0",
86
87
  "knip": "^5.82.1",
88
+ "playwright": "1.59.1",
87
89
  "simple-git-hooks": "^2.13.1",
88
90
  "typescript": "^5.9.2",
89
91
  "vite": "^7.3.1",
@@ -83,14 +83,14 @@ sequenceDiagram
83
83
  Transform->>Generators: getSelfClosingForDirectiveKeyAttrValue(node)
84
84
  Generators-->>Transform: return key value or null
85
85
  else Not in for directive
86
- Transform->>Generators: getContainedInVForDirectiveKeyValue(context)
87
- Generators-->>Transform: return key value or null
86
+ Transform->>Generators: getContainedInVForDirectiveKeyInfo(context)
87
+ Generators-->>Transform: return selector/runtime key info or null
88
88
  end
89
89
  end
90
90
 
91
91
  alt No key found
92
- Transform->>Generators: getKeyDirectiveValue(node)
93
- Generators-->>Transform: return key placeholder or null
92
+ Transform->>Generators: getKeyDirectiveInfo(node)
93
+ Generators-->>Transform: return selector/runtime key info or null
94
94
  end
95
95
 
96
96
  alt keyAttributeValue contains placeholder
@@ -98,7 +98,7 @@ sequenceDiagram
98
98
  else Generate complex testId
99
99
  Transform->>Generators: generateTestId(node, context, toDirective, typeSubmit, key, componentName)
100
100
  Note over Generators: generateTestId Process
101
- Generators->>Generators: getIdOrName(node) - extract id/name
101
+ Generators->>Generators: getStaticIdOrNameHint(node) - extract static id/name
102
102
  Generators->>Generators: getInnerText(node) - extract text content
103
103
  Generators->>Generators: Compose testId based on directives
104
104
  alt toDirective exists
@@ -165,7 +165,7 @@ Multiple specialized generators handle different element types:
165
165
  - `isOptionTagWithvalue()` - For option elements
166
166
 
167
167
  ### 4. **Helper Functions**
168
- - `getIdOrName()` - Extracts id/name attributes
168
+ - `getStaticIdOrNameHint()` - Extracts static id/name attributes
169
169
  - `getInnerText()` - Extracts text content from children
170
170
  - `formatTagName()` - Formats tag suffix (e.g., "_btn")
171
171
  - `getComposedClickHandlerContent()` - Analyzes @click handlers