@eidra-umain/greenlight 0.1.0 → 0.3.0

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 (90) hide show
  1. package/README.md +66 -3
  2. package/dist/browser/browser.d.ts +14 -4
  3. package/dist/browser/browser.d.ts.map +1 -1
  4. package/dist/browser/browser.js +89 -8
  5. package/dist/browser/browser.js.map +1 -1
  6. package/dist/cli/run.d.ts.map +1 -1
  7. package/dist/cli/run.js +161 -118
  8. package/dist/cli/run.js.map +1 -1
  9. package/dist/map/adapters/maplibre.d.ts +23 -0
  10. package/dist/map/adapters/maplibre.d.ts.map +1 -0
  11. package/dist/map/adapters/maplibre.js +367 -0
  12. package/dist/map/adapters/maplibre.js.map +1 -0
  13. package/dist/map/index.d.ts +36 -0
  14. package/dist/map/index.d.ts.map +1 -0
  15. package/dist/map/index.js +82 -0
  16. package/dist/map/index.js.map +1 -0
  17. package/dist/map/types.d.ts +96 -0
  18. package/dist/map/types.d.ts.map +1 -0
  19. package/dist/map/types.js +14 -0
  20. package/dist/map/types.js.map +1 -0
  21. package/dist/pilot/a11y-parser.d.ts.map +1 -1
  22. package/dist/pilot/a11y-parser.js +6 -3
  23. package/dist/pilot/a11y-parser.js.map +1 -1
  24. package/dist/pilot/assertions.d.ts +6 -6
  25. package/dist/pilot/assertions.d.ts.map +1 -1
  26. package/dist/pilot/assertions.js +267 -40
  27. package/dist/pilot/assertions.js.map +1 -1
  28. package/dist/pilot/executor.d.ts +6 -2
  29. package/dist/pilot/executor.d.ts.map +1 -1
  30. package/dist/pilot/executor.js +71 -36
  31. package/dist/pilot/executor.js.map +1 -1
  32. package/dist/pilot/llm.d.ts.map +1 -1
  33. package/dist/pilot/llm.js +1 -0
  34. package/dist/pilot/llm.js.map +1 -1
  35. package/dist/pilot/locator.d.ts +14 -2
  36. package/dist/pilot/locator.d.ts.map +1 -1
  37. package/dist/pilot/locator.js +95 -35
  38. package/dist/pilot/locator.js.map +1 -1
  39. package/dist/pilot/message-builder.d.ts.map +1 -1
  40. package/dist/pilot/message-builder.js +19 -0
  41. package/dist/pilot/message-builder.js.map +1 -1
  42. package/dist/pilot/pilot.d.ts +3 -1
  43. package/dist/pilot/pilot.d.ts.map +1 -1
  44. package/dist/pilot/pilot.js +106 -14
  45. package/dist/pilot/pilot.js.map +1 -1
  46. package/dist/pilot/prompts.d.ts +37 -3
  47. package/dist/pilot/prompts.d.ts.map +1 -1
  48. package/dist/pilot/prompts.js +167 -93
  49. package/dist/pilot/prompts.js.map +1 -1
  50. package/dist/pilot/providers/anthropic.d.ts +1 -1
  51. package/dist/pilot/providers/anthropic.d.ts.map +1 -1
  52. package/dist/pilot/providers/anthropic.js +2 -1
  53. package/dist/pilot/providers/anthropic.js.map +1 -1
  54. package/dist/pilot/providers/gemini.d.ts +1 -1
  55. package/dist/pilot/providers/gemini.d.ts.map +1 -1
  56. package/dist/pilot/providers/gemini.js +2 -1
  57. package/dist/pilot/providers/gemini.js.map +1 -1
  58. package/dist/pilot/providers/index.d.ts +1 -0
  59. package/dist/pilot/providers/index.d.ts.map +1 -1
  60. package/dist/pilot/providers/index.js +1 -0
  61. package/dist/pilot/providers/index.js.map +1 -1
  62. package/dist/pilot/providers/openai-compatible.d.ts +1 -1
  63. package/dist/pilot/providers/openai-compatible.d.ts.map +1 -1
  64. package/dist/pilot/providers/openai-compatible.js +2 -1
  65. package/dist/pilot/providers/openai-compatible.js.map +1 -1
  66. package/dist/pilot/providers/types.d.ts +9 -0
  67. package/dist/pilot/providers/types.d.ts.map +1 -1
  68. package/dist/pilot/providers/types.js +13 -1
  69. package/dist/pilot/providers/types.js.map +1 -1
  70. package/dist/pilot/response-parser.d.ts +13 -1
  71. package/dist/pilot/response-parser.d.ts.map +1 -1
  72. package/dist/pilot/response-parser.js +85 -2
  73. package/dist/pilot/response-parser.js.map +1 -1
  74. package/dist/pilot/state.d.ts +2 -0
  75. package/dist/pilot/state.d.ts.map +1 -1
  76. package/dist/pilot/state.js +12 -1
  77. package/dist/pilot/state.js.map +1 -1
  78. package/dist/planner/plan-runner.d.ts +2 -1
  79. package/dist/planner/plan-runner.d.ts.map +1 -1
  80. package/dist/planner/plan-runner.js +118 -18
  81. package/dist/planner/plan-runner.js.map +1 -1
  82. package/dist/planner/plan-types.d.ts +1 -0
  83. package/dist/planner/plan-types.d.ts.map +1 -1
  84. package/dist/reporter/types.d.ts +37 -2
  85. package/dist/reporter/types.d.ts.map +1 -1
  86. package/package.json +4 -3
  87. package/dist/parser/steps.d.ts +0 -13
  88. package/dist/parser/steps.d.ts.map +0 -1
  89. package/dist/parser/steps.js +0 -44
  90. package/dist/parser/steps.js.map +0 -1
@@ -11,6 +11,37 @@ export interface A11yNode {
11
11
  children?: A11yNode[];
12
12
  raw: string;
13
13
  }
14
+ /** Snapshot of an interactive map's viewport state. */
15
+ export interface MapState {
16
+ /** Which adapter produced this state (e.g. "maplibre", "leaflet", "mapbox"). */
17
+ adapter: string;
18
+ /** Map center coordinate. */
19
+ center: {
20
+ lng: number;
21
+ lat: number;
22
+ };
23
+ /** Current zoom level. */
24
+ zoom: number;
25
+ /** Camera bearing in degrees (0 = north). */
26
+ bearing: number;
27
+ /** Camera pitch in degrees (0 = straight down). */
28
+ pitch: number;
29
+ /** Visible bounds of the viewport. */
30
+ bounds: {
31
+ sw: {
32
+ lng: number;
33
+ lat: number;
34
+ };
35
+ ne: {
36
+ lng: number;
37
+ lat: number;
38
+ };
39
+ };
40
+ /** IDs of all layers in the current style. */
41
+ layers: string[];
42
+ /** Whether the map style is fully loaded. */
43
+ styleLoaded: boolean;
44
+ }
14
45
  /** Complete page state captured at a point in time. */
15
46
  export interface PageState {
16
47
  /** Accessibility tree snapshot with element refs assigned. */
@@ -27,6 +58,8 @@ export interface PageState {
27
58
  title: string;
28
59
  /** Console messages since last capture. */
29
60
  consoleLogs: ConsoleEntry[];
61
+ /** Map viewport state, if a supported map library was detected. */
62
+ mapState?: MapState;
30
63
  }
31
64
  /** A single browser console message. */
32
65
  export interface ConsoleEntry {
@@ -119,12 +152,14 @@ export interface Action {
119
152
  };
120
153
  /** For remember actions: the variable name to store the captured value. */
121
154
  rememberAs?: string;
122
- /** For compare assertions: reference to a remembered variable and operator. */
155
+ /** For compare assertions: reference to a remembered variable (or a literal value) and operator. */
123
156
  compare?: {
124
- /** The remembered variable name to compare against. */
157
+ /** The remembered variable name to compare against (ignored when `literal` is set). */
125
158
  variable: string;
126
159
  /** Comparison operator. */
127
160
  operator: "less_than" | "greater_than" | "equal" | "not_equal" | "less_or_equal" | "greater_or_equal";
161
+ /** When set, compare the page value against this literal instead of a remembered variable. */
162
+ literal?: string;
128
163
  };
129
164
  }
130
165
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/reporter/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/reporter/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@eidra-umain/greenlight",
3
- "version": "0.1.0",
4
- "description": "AI-driven E2E testing tool — write tests as plain English, no selectors or glue code",
5
- "license": "ISC",
3
+ "version": "0.3.0",
4
+ "description": "E2E web testing tool — write tests as plain English, no selectors or glue code",
5
+ "license": "MIT",
6
6
  "author": "umain.com",
7
7
  "type": "module",
8
8
  "main": "dist/cli/index.js",
@@ -48,6 +48,7 @@
48
48
  "commander": "^13.0.0",
49
49
  "dotenv": "^17.3.1",
50
50
  "playwright": "^1.58.2",
51
+ "playwright-zoom": "^1.1.0",
51
52
  "yaml": "^2.8.2",
52
53
  "zod": "^4.3.6"
53
54
  },
@@ -1,13 +0,0 @@
1
- /**
2
- * Step preprocessor — expands compound steps into individual atomic steps.
3
- *
4
- * Runs at load time before execution, so there's no runtime cost.
5
- * Each output step maps to exactly one browser action.
6
- */
7
- /**
8
- * Expand compound steps in a step list.
9
- * E.g. "Select Företag - Ventilation - Kylteknik in the leads form"
10
- * becomes three steps: click "Företag", click "Ventilation", click "Kylteknik".
11
- */
12
- export declare function expandSteps(steps: string[]): string[];
13
- //# sourceMappingURL=steps.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"steps.d.ts","sourceRoot":"","sources":["../../src/parser/steps.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAMrD"}
@@ -1,44 +0,0 @@
1
- /**
2
- * Step preprocessor — expands compound steps into individual atomic steps.
3
- *
4
- * Runs at load time before execution, so there's no runtime cost.
5
- * Each output step maps to exactly one browser action.
6
- */
7
- /**
8
- * Expand compound steps in a step list.
9
- * E.g. "Select Företag - Ventilation - Kylteknik in the leads form"
10
- * becomes three steps: click "Företag", click "Ventilation", click "Kylteknik".
11
- */
12
- export function expandSteps(steps) {
13
- const result = [];
14
- for (const step of steps) {
15
- result.push(...expandStep(step));
16
- }
17
- return result;
18
- }
19
- function expandStep(step) {
20
- // "Select X - Y - Z in <context>" → click each item in context
21
- const selectChain = /^select\s+(.+?)(?:\s+(?:in|from|on)\s+(.+))?$/i.exec(step);
22
- if (selectChain) {
23
- const items = selectChain[1];
24
- const context = selectChain[2];
25
- // Only split on " - " (spaced dashes) to avoid splitting hyphenated words
26
- const parts = items.split(/\s+-\s+/);
27
- if (parts.length > 1) {
28
- return parts.map((part) => {
29
- const trimmed = part.trim();
30
- return context
31
- ? `click "${trimmed}" in ${context}`
32
- : `click "${trimmed}"`;
33
- });
34
- }
35
- }
36
- // "Do X, then Y, then Z" → individual steps
37
- const thenParts = step.split(/,?\s+then\s+/i);
38
- if (thenParts.length > 1) {
39
- return thenParts.map((part) => part.trim());
40
- }
41
- // No expansion needed
42
- return [step];
43
- }
44
- //# sourceMappingURL=steps.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"steps.js","sourceRoot":"","sources":["../../src/parser/steps.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,KAAe;IAC1C,MAAM,MAAM,GAAa,EAAE,CAAA;IAC3B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QAC1B,MAAM,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAA;IACjC,CAAC;IACD,OAAO,MAAM,CAAA;AACd,CAAC;AAED,SAAS,UAAU,CAAC,IAAY;IAC/B,+DAA+D;IAC/D,MAAM,WAAW,GAAG,gDAAgD,CAAC,IAAI,CACxE,IAAI,CACJ,CAAA;IACD,IAAI,WAAW,EAAE,CAAC;QACjB,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,CAAA;QAC5B,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,CAAA;QAE9B,0EAA0E;QAC1E,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;QACpC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;gBACzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;gBAC3B,OAAO,OAAO;oBACb,CAAC,CAAC,UAAU,OAAO,QAAQ,OAAO,EAAE;oBACpC,CAAC,CAAC,UAAU,OAAO,GAAG,CAAA;YACxB,CAAC,CAAC,CAAA;QACH,CAAC;IACF,CAAC;IAED,4CAA4C;IAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAA;IAC7C,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;IAC5C,CAAC;IAED,sBAAsB;IACtB,OAAO,CAAC,IAAI,CAAC,CAAA;AACd,CAAC"}