@testmuai/playwright-bindings 0.1.1

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 (119) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +51 -0
  3. package/dist/capability.d.ts +60 -0
  4. package/dist/capability.d.ts.map +1 -0
  5. package/dist/capability.js +212 -0
  6. package/dist/capability.js.map +1 -0
  7. package/dist/config.d.ts +12 -0
  8. package/dist/config.d.ts.map +1 -0
  9. package/dist/config.js +16 -0
  10. package/dist/config.js.map +1 -0
  11. package/dist/configure.d.ts +30 -0
  12. package/dist/configure.d.ts.map +1 -0
  13. package/dist/configure.js +53 -0
  14. package/dist/configure.js.map +1 -0
  15. package/dist/errors.d.ts +4 -0
  16. package/dist/errors.d.ts.map +1 -0
  17. package/dist/errors.js +7 -0
  18. package/dist/errors.js.map +1 -0
  19. package/dist/healPatch.d.ts +11 -0
  20. package/dist/healPatch.d.ts.map +1 -0
  21. package/dist/healPatch.js +82 -0
  22. package/dist/healPatch.js.map +1 -0
  23. package/dist/helpers/assertion.d.ts +23 -0
  24. package/dist/helpers/assertion.d.ts.map +1 -0
  25. package/dist/helpers/assertion.js +87 -0
  26. package/dist/helpers/assertion.js.map +1 -0
  27. package/dist/helpers/drag.d.ts +3 -0
  28. package/dist/helpers/drag.d.ts.map +1 -0
  29. package/dist/helpers/drag.js +7 -0
  30. package/dist/helpers/drag.js.map +1 -0
  31. package/dist/helpers/executeApi.d.ts +34 -0
  32. package/dist/helpers/executeApi.d.ts.map +1 -0
  33. package/dist/helpers/executeApi.js +83 -0
  34. package/dist/helpers/executeApi.js.map +1 -0
  35. package/dist/helpers/executeDb.d.ts +9 -0
  36. package/dist/helpers/executeDb.d.ts.map +1 -0
  37. package/dist/helpers/executeDb.js +23 -0
  38. package/dist/helpers/executeDb.js.map +1 -0
  39. package/dist/helpers/executeJs.d.ts +16 -0
  40. package/dist/helpers/executeJs.d.ts.map +1 -0
  41. package/dist/helpers/executeJs.js +58 -0
  42. package/dist/helpers/executeJs.js.map +1 -0
  43. package/dist/helpers/kaneCli.d.ts +2 -0
  44. package/dist/helpers/kaneCli.d.ts.map +1 -0
  45. package/dist/helpers/kaneCli.js +5 -0
  46. package/dist/helpers/kaneCli.js.map +1 -0
  47. package/dist/helpers/math.d.ts +6 -0
  48. package/dist/helpers/math.d.ts.map +1 -0
  49. package/dist/helpers/math.js +70 -0
  50. package/dist/helpers/math.js.map +1 -0
  51. package/dist/helpers/network.d.ts +23 -0
  52. package/dist/helpers/network.d.ts.map +1 -0
  53. package/dist/helpers/network.js +67 -0
  54. package/dist/helpers/network.js.map +1 -0
  55. package/dist/helpers/smartui.d.ts +3 -0
  56. package/dist/helpers/smartui.d.ts.map +1 -0
  57. package/dist/helpers/smartui.js +11 -0
  58. package/dist/helpers/smartui.js.map +1 -0
  59. package/dist/helpers/tabs.d.ts +3 -0
  60. package/dist/helpers/tabs.d.ts.map +1 -0
  61. package/dist/helpers/tabs.js +13 -0
  62. package/dist/helpers/tabs.js.map +1 -0
  63. package/dist/helpers/vision.d.ts +48 -0
  64. package/dist/helpers/vision.d.ts.map +1 -0
  65. package/dist/helpers/vision.js +169 -0
  66. package/dist/helpers/vision.js.map +1 -0
  67. package/dist/helpers/wait.d.ts +3 -0
  68. package/dist/helpers/wait.d.ts.map +1 -0
  69. package/dist/helpers/wait.js +21 -0
  70. package/dist/helpers/wait.js.map +1 -0
  71. package/dist/http.d.ts +12 -0
  72. package/dist/http.d.ts.map +1 -0
  73. package/dist/http.js +29 -0
  74. package/dist/http.js.map +1 -0
  75. package/dist/index.d.ts +56 -0
  76. package/dist/index.d.ts.map +1 -0
  77. package/dist/index.js +34 -0
  78. package/dist/index.js.map +1 -0
  79. package/dist/log.d.ts +22 -0
  80. package/dist/log.d.ts.map +1 -0
  81. package/dist/log.js +43 -0
  82. package/dist/log.js.map +1 -0
  83. package/dist/reporters/index.d.ts +10 -0
  84. package/dist/reporters/index.d.ts.map +1 -0
  85. package/dist/reporters/index.js +7 -0
  86. package/dist/reporters/index.js.map +1 -0
  87. package/dist/reporters/local.d.ts +11 -0
  88. package/dist/reporters/local.d.ts.map +1 -0
  89. package/dist/reporters/local.js +29 -0
  90. package/dist/reporters/local.js.map +1 -0
  91. package/dist/reporters/lt.d.ts +15 -0
  92. package/dist/reporters/lt.d.ts.map +1 -0
  93. package/dist/reporters/lt.js +48 -0
  94. package/dist/reporters/lt.js.map +1 -0
  95. package/dist/reporters/null.d.ts +10 -0
  96. package/dist/reporters/null.d.ts.map +1 -0
  97. package/dist/reporters/null.js +9 -0
  98. package/dist/reporters/null.js.map +1 -0
  99. package/dist/session.d.ts +2 -0
  100. package/dist/session.d.ts.map +1 -0
  101. package/dist/session.js +61 -0
  102. package/dist/session.js.map +1 -0
  103. package/dist/step.d.ts +14 -0
  104. package/dist/step.d.ts.map +1 -0
  105. package/dist/step.js +36 -0
  106. package/dist/step.js.map +1 -0
  107. package/dist/test.d.ts +10 -0
  108. package/dist/test.d.ts.map +1 -0
  109. package/dist/test.js +5 -0
  110. package/dist/test.js.map +1 -0
  111. package/dist/testConfig.d.ts +11 -0
  112. package/dist/testConfig.d.ts.map +1 -0
  113. package/dist/testConfig.js +82 -0
  114. package/dist/testConfig.js.map +1 -0
  115. package/dist/vars.d.ts +61 -0
  116. package/dist/vars.d.ts.map +1 -0
  117. package/dist/vars.js +656 -0
  118. package/dist/vars.js.map +1 -0
  119. package/package.json +63 -0
@@ -0,0 +1,48 @@
1
+ import { log } from '../log.js';
2
+ export class LTReporter {
3
+ page = null;
4
+ stepNum = 0;
5
+ _setPage(page) {
6
+ this.page = page;
7
+ }
8
+ async action(actionName, args) {
9
+ if (!this.page)
10
+ return;
11
+ try {
12
+ const payload = JSON.stringify({ action: actionName, arguments: args });
13
+ await this.page.evaluate('_ => {}', `lambdatest_action: ${payload}`);
14
+ }
15
+ catch {
16
+ // swallow — dashboard reporting must never fail a test
17
+ }
18
+ }
19
+ async beginTest(name) {
20
+ this.stepNum = 0;
21
+ log.test(`[TEST START] ${name}`);
22
+ }
23
+ async passTest() {
24
+ log.test(`[TEST PASS] (${this.stepNum} steps)`);
25
+ await this.action('setTestStatus', { status: 'passed', remark: 'Test completed successfully' });
26
+ }
27
+ async failTest(error) {
28
+ const msg = error instanceof Error ? error.message : String(error);
29
+ log.test(`[TEST FAIL] at step ${this.stepNum} — ${msg}`);
30
+ await this.action('setTestStatus', { status: 'failed', remark: msg });
31
+ }
32
+ async beginStep(description) {
33
+ this.stepNum += 1;
34
+ log.step(`[STEP ${this.stepNum}] ${description}`);
35
+ await this.action('lambda-testCase-start', { name: description });
36
+ }
37
+ async endStep(description, ok, error) {
38
+ if (!ok) {
39
+ const msg = error instanceof Error ? error.message : String(error ?? description);
40
+ log.step(`[STEP ${this.stepNum} FAIL] ${msg}`);
41
+ }
42
+ await this.action('lambda-testCase-end', { name: description });
43
+ }
44
+ async attachScreenshot(_data) {
45
+ // LT cloud captures screenshots automatically
46
+ }
47
+ }
48
+ //# sourceMappingURL=lt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lt.js","sourceRoot":"","sources":["../../src/reporters/lt.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAEhC,MAAM,OAAO,UAAU;IACb,IAAI,GAAgB,IAAI,CAAC;IACzB,OAAO,GAAG,CAAC,CAAC;IAEpB,QAAQ,CAAC,IAAU;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAEO,KAAK,CAAC,MAAM,CAAC,UAAkB,EAAE,IAAY;QACnD,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,OAAO;QACvB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACxE,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,sBAAsB,OAAO,EAAE,CAAC,CAAC;QACvE,CAAC;QAAC,MAAM,CAAC;YACP,uDAAuD;QACzD,CAAC;IACH,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,IAAY;QAC1B,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;QACjB,GAAG,CAAC,IAAI,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,GAAG,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,OAAO,SAAS,CAAC,CAAC;QAChD,MAAM,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,6BAA6B,EAAE,CAAC,CAAC;IAClG,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,KAAc;QAC3B,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACnE,GAAG,CAAC,IAAI,CAAC,uBAAuB,IAAI,CAAC,OAAO,MAAM,GAAG,EAAE,CAAC,CAAC;QACzD,MAAM,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IACxE,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,WAAmB;QACjC,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC;QAClB,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,OAAO,KAAK,WAAW,EAAE,CAAC,CAAC;QAClD,MAAM,IAAI,CAAC,MAAM,CAAC,uBAAuB,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;IACpE,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,WAAmB,EAAE,EAAW,EAAE,KAAe;QAC7D,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,WAAW,CAAC,CAAC;YAClF,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,OAAO,UAAU,GAAG,EAAE,CAAC,CAAC;QACjD,CAAC;QACD,MAAM,IAAI,CAAC,MAAM,CAAC,qBAAqB,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,KAAa;QAClC,8CAA8C;IAChD,CAAC;CACF"}
@@ -0,0 +1,10 @@
1
+ import type { Reporter } from './index.js';
2
+ export declare class NullReporter implements Reporter {
3
+ beginTest(_name: string): Promise<void>;
4
+ passTest(): Promise<void>;
5
+ failTest(_error: unknown): Promise<void>;
6
+ beginStep(_description: string): Promise<void>;
7
+ endStep(_description: string, _ok: boolean, _error?: unknown): Promise<void>;
8
+ attachScreenshot(_data: Buffer): Promise<void>;
9
+ }
10
+ //# sourceMappingURL=null.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"null.d.ts","sourceRoot":"","sources":["../../src/reporters/null.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,qBAAa,YAAa,YAAW,QAAQ;IACrC,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IACvC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IACxC,SAAS,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAC9C,OAAO,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAC5E,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CACrD"}
@@ -0,0 +1,9 @@
1
+ export class NullReporter {
2
+ async beginTest(_name) { }
3
+ async passTest() { }
4
+ async failTest(_error) { }
5
+ async beginStep(_description) { }
6
+ async endStep(_description, _ok, _error) { }
7
+ async attachScreenshot(_data) { }
8
+ }
9
+ //# sourceMappingURL=null.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"null.js","sourceRoot":"","sources":["../../src/reporters/null.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,YAAY;IACvB,KAAK,CAAC,SAAS,CAAC,KAAa,IAAkB,CAAC;IAChD,KAAK,CAAC,QAAQ,KAAmB,CAAC;IAClC,KAAK,CAAC,QAAQ,CAAC,MAAe,IAAkB,CAAC;IACjD,KAAK,CAAC,SAAS,CAAC,YAAoB,IAAkB,CAAC;IACvD,KAAK,CAAC,OAAO,CAAC,YAAoB,EAAE,GAAY,EAAE,MAAgB,IAAkB,CAAC;IACrF,KAAK,CAAC,gBAAgB,CAAC,KAAa,IAAkB,CAAC;CACxD"}
@@ -0,0 +1,2 @@
1
+ export declare function run(): Promise<void>;
2
+ //# sourceMappingURL=session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AA8BA,wBAAsB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAgCzC"}
@@ -0,0 +1,61 @@
1
+ import { chromium } from 'playwright';
2
+ import { config } from './config.js';
3
+ import { _getRegistry } from './test.js';
4
+ import { createReporter } from './reporters/index.js';
5
+ import { LTReporter } from './reporters/lt.js';
6
+ import { _setReporter, _endDanglingStep } from './step.js';
7
+ import { buildCapabilities, getCdpUrl, getViewport } from './capability.js';
8
+ import { TestmuConfigError } from './errors.js';
9
+ // Deferred: file download (_download_files) — Python downloads uploaded_files
10
+ // via aiohttp after browser launch; no equivalent in TS scope yet.
11
+ // Deferred: HE test-param overrides (get_test_params_override) — no testConfig
12
+ // param-override integration in TS yet.
13
+ async function createBrowserAndPage() {
14
+ const caps = await buildCapabilities();
15
+ if (config.current.runTarget === 'cloud') {
16
+ const browser = await chromium.connectOverCDP(getCdpUrl(caps));
17
+ const context = browser.contexts()[0] ?? await browser.newContext();
18
+ const page = context.pages()[0] ?? await context.newPage();
19
+ return { browser, context, page };
20
+ }
21
+ const headless = process.env['TESTMU_HEADLESS'] !== 'false';
22
+ const browser = await chromium.launch({ headless });
23
+ const context = await browser.newContext({ viewport: getViewport(process.env['LT_RESOLUTION']) });
24
+ const page = await context.newPage();
25
+ return { browser, context, page };
26
+ }
27
+ export async function run() {
28
+ if (config.current.smart && !config.current.ltAuth) {
29
+ throw new TestmuConfigError('TESTMU_SMART=1 requires LT_USERNAME and LT_ACCESS_KEY. ' +
30
+ 'Smart helpers (vision, heal, kane-cli, SmartUI) need LT infrastructure.');
31
+ }
32
+ const reporter = createReporter();
33
+ _setReporter(reporter);
34
+ const { browser, page } = await createBrowserAndPage();
35
+ if (reporter instanceof LTReporter)
36
+ reporter._setPage(page);
37
+ try {
38
+ for (const t of _getRegistry()) {
39
+ await reporter.beginTest(t.name);
40
+ try {
41
+ await t.fn(page);
42
+ await _endDanglingStep({ ok: true });
43
+ await reporter.passTest();
44
+ }
45
+ catch (e) {
46
+ await _endDanglingStep({ ok: false, error: e });
47
+ try {
48
+ await reporter.attachScreenshot(await page.screenshot());
49
+ }
50
+ catch { /* swallow */ }
51
+ await reporter.failTest(e);
52
+ throw e;
53
+ }
54
+ }
55
+ }
56
+ finally {
57
+ await browser.close();
58
+ _setReporter(null);
59
+ }
60
+ }
61
+ //# sourceMappingURL=session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAgD,MAAM,YAAY,CAAC;AACpF,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,cAAc,EAAiB,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,8EAA8E;AAC9E,mEAAmE;AAEnE,+EAA+E;AAC/E,wCAAwC;AAExC,KAAK,UAAU,oBAAoB;IACjC,MAAM,IAAI,GAAG,MAAM,iBAAiB,EAAE,CAAC;IACvC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,KAAK,OAAO,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/D,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;QACpE,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;QAC3D,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACpC,CAAC;IACD,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,KAAK,OAAO,CAAC;IAC5D,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;IACpD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC;IAClG,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;IACrC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AACpC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,GAAG;IACvB,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACnD,MAAM,IAAI,iBAAiB,CACzB,yDAAyD;YACzD,yEAAyE,CAC1E,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAa,cAAc,EAAE,CAAC;IAC5C,YAAY,CAAC,QAAQ,CAAC,CAAC;IAEvB,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,MAAM,oBAAoB,EAAE,CAAC;IACvD,IAAI,QAAQ,YAAY,UAAU;QAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAE5D,IAAI,CAAC;QACH,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE,EAAE,CAAC;YAC/B,MAAM,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACjC,IAAI,CAAC;gBACH,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;gBACjB,MAAM,gBAAgB,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;gBACrC,MAAM,QAAQ,CAAC,QAAQ,EAAE,CAAC;YAC5B,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,MAAM,gBAAgB,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;gBAChD,IAAI,CAAC;oBAAC,MAAM,QAAQ,CAAC,gBAAgB,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAC,aAAa,CAAC,CAAC;gBACzF,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAC3B,MAAM,CAAC,CAAC;YACV,CAAC;QACH,CAAC;IACH,CAAC;YAAS,CAAC;QACT,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;QACtB,YAAY,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC;AACH,CAAC"}
package/dist/step.d.ts ADDED
@@ -0,0 +1,14 @@
1
+ import type { Reporter } from './reporters/index.js';
2
+ export interface StepState {
3
+ description: string;
4
+ }
5
+ export declare function _setReporter(r: Reporter | null): void;
6
+ export declare function currentStep(): StepState | null;
7
+ export declare function step(description: string): void;
8
+ export declare function done(): void;
9
+ export declare function _endDanglingStep(opts?: {
10
+ ok: boolean;
11
+ error?: unknown;
12
+ }): Promise<void>;
13
+ export declare function _resetStep(): void;
14
+ //# sourceMappingURL=step.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"step.d.ts","sourceRoot":"","sources":["../src/step.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAErD,MAAM,WAAW,SAAS;IAAG,WAAW,EAAE,MAAM,CAAC;CAAE;AAKnD,wBAAgB,YAAY,CAAC,CAAC,EAAE,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAmB;AACzE,wBAAgB,WAAW,IAAI,SAAS,GAAG,IAAI,CAAqB;AAEpE,wBAAgB,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAM9C;AAED,wBAAgB,IAAI,IAAI,IAAI,CAK3B;AAED,wBAAsB,gBAAgB,CAAC,IAAI,GAAE;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAW3G;AAED,wBAAgB,UAAU,IAAI,IAAI,CAAuC"}
package/dist/step.js ADDED
@@ -0,0 +1,36 @@
1
+ let _current = null;
2
+ let _reporter = null;
3
+ export function _setReporter(r) { _reporter = r; }
4
+ export function currentStep() { return _current; }
5
+ export function step(description) {
6
+ if (_current !== null && _reporter) {
7
+ void _reporter.endStep(_current.description, true);
8
+ }
9
+ _current = { description };
10
+ if (_reporter)
11
+ void _reporter.beginStep(description);
12
+ }
13
+ export function done() {
14
+ if (_current === null)
15
+ return;
16
+ const desc = _current.description;
17
+ _current = null;
18
+ if (_reporter)
19
+ void _reporter.endStep(desc, true);
20
+ }
21
+ export async function _endDanglingStep(opts = { ok: true }) {
22
+ if (_current === null)
23
+ return;
24
+ const desc = _current.description;
25
+ _current = null;
26
+ if (_reporter) {
27
+ if (opts.error !== undefined) {
28
+ await _reporter.endStep(desc, opts.ok, opts.error);
29
+ }
30
+ else {
31
+ await _reporter.endStep(desc, opts.ok);
32
+ }
33
+ }
34
+ }
35
+ export function _resetStep() { _current = null; _reporter = null; }
36
+ //# sourceMappingURL=step.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"step.js","sourceRoot":"","sources":["../src/step.ts"],"names":[],"mappings":"AAIA,IAAI,QAAQ,GAAqB,IAAI,CAAC;AACtC,IAAI,SAAS,GAAoB,IAAI,CAAC;AAEtC,MAAM,UAAU,YAAY,CAAC,CAAkB,IAAU,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC;AACzE,MAAM,UAAU,WAAW,KAAuB,OAAO,QAAQ,CAAC,CAAC,CAAC;AAEpE,MAAM,UAAU,IAAI,CAAC,WAAmB;IACtC,IAAI,QAAQ,KAAK,IAAI,IAAI,SAAS,EAAE,CAAC;QACnC,KAAK,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IACrD,CAAC;IACD,QAAQ,GAAG,EAAE,WAAW,EAAE,CAAC;IAC3B,IAAI,SAAS;QAAE,KAAK,SAAS,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,IAAI;IAClB,IAAI,QAAQ,KAAK,IAAI;QAAE,OAAO;IAC9B,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,CAAC;IAClC,QAAQ,GAAG,IAAI,CAAC;IAChB,IAAI,SAAS;QAAE,KAAK,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,OAAyC,EAAE,EAAE,EAAE,IAAI,EAAE;IAC1F,IAAI,QAAQ,KAAK,IAAI;QAAE,OAAO;IAC9B,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,CAAC;IAClC,QAAQ,GAAG,IAAI,CAAC;IAChB,IAAI,SAAS,EAAE,CAAC;QACd,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC7B,MAAM,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACrD,CAAC;aAAM,CAAC;YACN,MAAM,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,UAAU,KAAW,QAAQ,GAAG,IAAI,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC"}
package/dist/test.d.ts ADDED
@@ -0,0 +1,10 @@
1
+ import type { Page } from 'playwright';
2
+ export type TestFn = (page: Page) => Promise<void>;
3
+ export interface RegisteredTest {
4
+ name: string;
5
+ fn: TestFn;
6
+ }
7
+ export declare function test(name: string, fn: TestFn): void;
8
+ export declare function _getRegistry(): ReadonlyArray<RegisteredTest>;
9
+ export declare function _resetRegistry(): void;
10
+ //# sourceMappingURL=test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEvC,MAAM,MAAM,MAAM,GAAG,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AACnD,MAAM,WAAW,cAAc;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;CAAE;AAI7D,wBAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAAiC;AACrF,wBAAgB,YAAY,IAAI,aAAa,CAAC,cAAc,CAAC,CAAqB;AAClF,wBAAgB,cAAc,IAAI,IAAI,CAAyB"}
package/dist/test.js ADDED
@@ -0,0 +1,5 @@
1
+ const registry = [];
2
+ export function test(name, fn) { registry.push({ name, fn }); }
3
+ export function _getRegistry() { return registry; }
4
+ export function _resetRegistry() { registry.length = 0; }
5
+ //# sourceMappingURL=test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test.js","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":"AAKA,MAAM,QAAQ,GAAqB,EAAE,CAAC;AAEtC,MAAM,UAAU,IAAI,CAAC,IAAY,EAAE,EAAU,IAAU,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AACrF,MAAM,UAAU,YAAY,KAAoC,OAAO,QAAQ,CAAC,CAAC,CAAC;AAClF,MAAM,UAAU,cAAc,KAAW,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC"}
@@ -0,0 +1,11 @@
1
+ export interface TestInstance {
2
+ test_instance_id?: string;
3
+ test_params?: Record<string, unknown>;
4
+ timezone?: unknown;
5
+ [k: string]: unknown;
6
+ }
7
+ export declare function loadTestConfig(): Promise<TestInstance | null>;
8
+ export declare function getCapValue<T = unknown>(capName: string, defaultValue: T): Promise<T | string>;
9
+ export declare function getTestParamsOverride(): Promise<Record<string, unknown>>;
10
+ export declare function _resetCache(): void;
11
+ //# sourceMappingURL=testConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testConfig.d.ts","sourceRoot":"","sources":["../src/testConfig.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,YAAY;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACtB;AAkBD,wBAAsB,cAAc,IAAI,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CA8BnE;AAED,wBAAsB,WAAW,CAAC,CAAC,GAAG,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,CASpG;AAED,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAM9E;AAED,wBAAgB,WAAW,IAAI,IAAI,CAAuB"}
@@ -0,0 +1,82 @@
1
+ import { promises as fs } from 'node:fs';
2
+ let cache;
3
+ function platformPath(testRunId, platform) {
4
+ const p = platform.toLowerCase();
5
+ if (p.includes('linux'))
6
+ return `/home/ltuser/foreman/ltuser/${testRunId}.json`;
7
+ if (p.includes('mac'))
8
+ return `/Users/ltuser/foreman/ltuser/${testRunId}.json`;
9
+ if (p.includes('win'))
10
+ return `D:/foreman/ltuser/${testRunId}.json`;
11
+ return null;
12
+ }
13
+ async function fileExists(path) {
14
+ try {
15
+ await fs.access(path);
16
+ return true;
17
+ }
18
+ catch {
19
+ return false;
20
+ }
21
+ }
22
+ export async function loadTestConfig() {
23
+ if (cache !== undefined)
24
+ return cache;
25
+ let filePath;
26
+ if (process.argv.length > 7)
27
+ filePath = process.argv[7];
28
+ if (!filePath) {
29
+ const testRunId = process.env['TEST_RUN_ID'];
30
+ if (!testRunId) {
31
+ cache = null;
32
+ return null;
33
+ }
34
+ const platform = (process.argv.length > 4 ? process.argv[4] : undefined) ?? process.env['LT_PLATFORM'] ?? 'linux';
35
+ const p = platformPath(testRunId, platform);
36
+ if (!p) {
37
+ cache = null;
38
+ return null;
39
+ }
40
+ filePath = p;
41
+ }
42
+ if (!(await fileExists(filePath))) {
43
+ cache = null;
44
+ return null;
45
+ }
46
+ try {
47
+ const content = await fs.readFile(filePath, 'utf-8');
48
+ const parsed = JSON.parse(content);
49
+ const testInstanceId = (process.argv.length > 6 ? process.argv[6] : undefined) ?? '1';
50
+ const platform = (process.argv.length > 4 ? process.argv[4] : undefined) ?? process.env['LT_PLATFORM'] ?? 'linux';
51
+ const instances = parsed[platform] ?? [];
52
+ const match = instances.find(i => i.test_instance_id === testInstanceId);
53
+ cache = match ?? null;
54
+ return cache;
55
+ }
56
+ catch {
57
+ cache = null;
58
+ return null;
59
+ }
60
+ }
61
+ export async function getCapValue(capName, defaultValue) {
62
+ const cfg = await loadTestConfig();
63
+ if (cfg) {
64
+ const val = cfg[capName.toLowerCase()];
65
+ if (val !== undefined && val !== null)
66
+ return val;
67
+ }
68
+ const envVal = process.env[capName];
69
+ if (envVal !== undefined)
70
+ return envVal;
71
+ return defaultValue;
72
+ }
73
+ export async function getTestParamsOverride() {
74
+ const cfg = await loadTestConfig();
75
+ if (!cfg?.test_params)
76
+ return {};
77
+ const params = { ...cfg.test_params };
78
+ delete params['_id'];
79
+ return params;
80
+ }
81
+ export function _resetCache() { cache = undefined; }
82
+ //# sourceMappingURL=testConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testConfig.js","sourceRoot":"","sources":["../src/testConfig.ts"],"names":[],"mappings":"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"}
package/dist/vars.d.ts ADDED
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Variable resolution for testmu.
3
+ *
4
+ * v(template) resolves {{...}} and ${...} placeholders:
5
+ * - Pure {{x}} → direct lookup from userStore (type-preserving); unresolved → ""
6
+ * - Embedded "prefix {{x}} suffix" → string interpolation; unresolved → ""
7
+ * - ${x} → testParams lookup, then userStore fallback (type-preserving when pure)
8
+ * - Non-string / non-template values → returned as-is
9
+ *
10
+ * vAsync(template) additionally resolves:
11
+ * - {{global.X}} → ATMS API or TESTMU_VAR_X env fallback
12
+ * - {{environment.X}} → ATMS API (with ENVIRONMENT_ID) or TESTMU_VAR_X env fallback
13
+ * - {{secrets.cat.KEY}} → process.env[KEY]
14
+ * - {{smart.X}} → local computation (no HTTP)
15
+ * - plain {{x}} / ${x} → delegates to sync v()
16
+ */
17
+ /** Shape of an entry in the global-variables list (populated by configure() in Task 15). */
18
+ export interface GlobalVariable {
19
+ name: string;
20
+ value: string;
21
+ is_persist: boolean;
22
+ session_value?: string;
23
+ }
24
+ export type Transform = "upper" | "lower" | "trim" | "str" | "int" | "float" | "bool";
25
+ export interface VOptions {
26
+ transform?: Transform;
27
+ }
28
+ export interface SetVarOptions {
29
+ scope?: "user" | "testParams";
30
+ }
31
+ /** Store a variable value into the given scope (default: user variables). */
32
+ export declare function setVar(name: string, value: unknown, opts?: SetVarOptions): void;
33
+ /** Reset all stores (for testing). */
34
+ export declare function _resetStore(): void;
35
+ /** Expose globalVariables for later tasks. */
36
+ export declare function _getGlobalVariables(): readonly GlobalVariable[];
37
+ /** Return the user variable store as a plain object (for executeJs injection). */
38
+ export declare function _getUserStore(): Record<string, unknown>;
39
+ /** Append a global variable entry (called by configure() in Task 15). */
40
+ export declare function _addGlobalVariable(g: GlobalVariable): void;
41
+ /**
42
+ * Resolve a template value.
43
+ *
44
+ * - Non-string → returned as-is.
45
+ * - No {{...}} or ${...} → returned as-is.
46
+ * - Pure {{x}} → type-preserving lookup; unresolved → "".
47
+ * - Pure ${x} → testParams then userStore lookup; unresolved → "".
48
+ * - Embedded (contains other text) → string interpolation; unresolved → "".
49
+ */
50
+ export declare function v<T = unknown>(template: unknown, opts?: VOptions): T;
51
+ /**
52
+ * Async variable resolution — extends v() with HTTP-backed lookups.
53
+ *
54
+ * - {{global.X}} → ATMS or TESTMU_VAR_X fallback
55
+ * - {{environment.X}} → ATMS (with ENVIRONMENT_ID) or TESTMU_VAR_X fallback
56
+ * - {{secrets.cat.KEY}} → process.env[KEY]
57
+ * - {{smart.X}} → local computation (no HTTP)
58
+ * - plain {{x}} / ${x} → delegates to sync v()
59
+ */
60
+ export declare function vAsync<T = unknown>(template: unknown, opts?: VOptions): Promise<T>;
61
+ //# sourceMappingURL=vars.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vars.d.ts","sourceRoot":"","sources":["../src/vars.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAaH,4FAA4F;AAC5F,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAyBD,MAAM,MAAM,SAAS,GACjB,OAAO,GACP,OAAO,GACP,MAAM,GACN,KAAK,GACL,KAAK,GACL,OAAO,GACP,MAAM,CAAC;AAgCX,MAAM,WAAW,QAAQ;IACvB,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,MAAM,GAAG,YAAY,CAAC;CAC/B;AAED,6EAA6E;AAC7E,wBAAgB,MAAM,CACpB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,OAAO,EACd,IAAI,GAAE,aAAkB,GACvB,IAAI,CAON;AAED,sCAAsC;AACtC,wBAAgB,WAAW,IAAI,IAAI,CAIlC;AAED,8CAA8C;AAC9C,wBAAgB,mBAAmB,IAAI,SAAS,cAAc,EAAE,CAE/D;AAED,kFAAkF;AAClF,wBAAgB,aAAa,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEvD;AAED,yEAAyE;AACzE,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,cAAc,GAAG,IAAI,CAE1D;AAED;;;;;;;;GAQG;AACH,wBAAgB,CAAC,CAAC,CAAC,GAAG,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,GAAE,QAAa,GAAG,CAAC,CA8CxE;AAqdD;;;;;;;;GAQG;AACH,wBAAsB,MAAM,CAAC,CAAC,GAAG,OAAO,EACtC,QAAQ,EAAE,OAAO,EACjB,IAAI,GAAE,QAAa,GAClB,OAAO,CAAC,CAAC,CAAC,CA0EZ"}