angular-uitest 1.0.3

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 (133) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +336 -0
  3. package/bin/samaro-allure.mjs +178 -0
  4. package/bin/samaro-init.mjs +407 -0
  5. package/bin/samaro-test.mjs +119 -0
  6. package/dist/cjs/config/index.d.ts +4 -0
  7. package/dist/cjs/config/index.d.ts.map +1 -0
  8. package/dist/cjs/config/index.js +11 -0
  9. package/dist/cjs/config/index.js.map +1 -0
  10. package/dist/cjs/config/playwright.component.config.d.ts +12 -0
  11. package/dist/cjs/config/playwright.component.config.d.ts.map +1 -0
  12. package/dist/cjs/config/playwright.component.config.js +42 -0
  13. package/dist/cjs/config/playwright.component.config.js.map +1 -0
  14. package/dist/cjs/config/playwright.config.d.ts +14 -0
  15. package/dist/cjs/config/playwright.config.d.ts.map +1 -0
  16. package/dist/cjs/config/playwright.config.js +53 -0
  17. package/dist/cjs/config/playwright.config.js.map +1 -0
  18. package/dist/cjs/config/vitest.config.d.ts +12 -0
  19. package/dist/cjs/config/vitest.config.d.ts.map +1 -0
  20. package/dist/cjs/config/vitest.config.js +60 -0
  21. package/dist/cjs/config/vitest.config.js.map +1 -0
  22. package/dist/cjs/helpers/allure.d.ts +141 -0
  23. package/dist/cjs/helpers/allure.d.ts.map +1 -0
  24. package/dist/cjs/helpers/allure.js +331 -0
  25. package/dist/cjs/helpers/allure.js.map +1 -0
  26. package/dist/cjs/helpers/api.d.ts +69 -0
  27. package/dist/cjs/helpers/api.d.ts.map +1 -0
  28. package/dist/cjs/helpers/api.js +163 -0
  29. package/dist/cjs/helpers/api.js.map +1 -0
  30. package/dist/cjs/helpers/auth.d.ts +35 -0
  31. package/dist/cjs/helpers/auth.d.ts.map +1 -0
  32. package/dist/cjs/helpers/auth.js +104 -0
  33. package/dist/cjs/helpers/auth.js.map +1 -0
  34. package/dist/cjs/helpers/config.d.ts +34 -0
  35. package/dist/cjs/helpers/config.d.ts.map +1 -0
  36. package/dist/cjs/helpers/config.js +70 -0
  37. package/dist/cjs/helpers/config.js.map +1 -0
  38. package/dist/cjs/helpers/debug.d.ts +48 -0
  39. package/dist/cjs/helpers/debug.d.ts.map +1 -0
  40. package/dist/cjs/helpers/debug.js +86 -0
  41. package/dist/cjs/helpers/debug.js.map +1 -0
  42. package/dist/cjs/helpers/index.d.ts +8 -0
  43. package/dist/cjs/helpers/index.d.ts.map +1 -0
  44. package/dist/cjs/helpers/index.js +76 -0
  45. package/dist/cjs/helpers/index.js.map +1 -0
  46. package/dist/cjs/helpers/setup.d.ts +50 -0
  47. package/dist/cjs/helpers/setup.d.ts.map +1 -0
  48. package/dist/cjs/helpers/setup.js +137 -0
  49. package/dist/cjs/helpers/setup.js.map +1 -0
  50. package/dist/cjs/src/index.d.ts +17 -0
  51. package/dist/cjs/src/index.d.ts.map +1 -0
  52. package/dist/cjs/src/index.js +99 -0
  53. package/dist/cjs/src/index.js.map +1 -0
  54. package/dist/esm/config/index.d.ts +4 -0
  55. package/dist/esm/config/index.d.ts.map +1 -0
  56. package/dist/esm/config/index.mjs +4 -0
  57. package/dist/esm/config/index.mjs.map +1 -0
  58. package/dist/esm/config/playwright.component.config.d.ts +12 -0
  59. package/dist/esm/config/playwright.component.config.d.ts.map +1 -0
  60. package/dist/esm/config/playwright.component.config.mjs +39 -0
  61. package/dist/esm/config/playwright.component.config.mjs.map +1 -0
  62. package/dist/esm/config/playwright.config.d.ts +14 -0
  63. package/dist/esm/config/playwright.config.d.ts.map +1 -0
  64. package/dist/esm/config/playwright.config.mjs +50 -0
  65. package/dist/esm/config/playwright.config.mjs.map +1 -0
  66. package/dist/esm/config/vitest.config.d.ts +12 -0
  67. package/dist/esm/config/vitest.config.d.ts.map +1 -0
  68. package/dist/esm/config/vitest.config.mjs +56 -0
  69. package/dist/esm/config/vitest.config.mjs.map +1 -0
  70. package/dist/esm/helpers/allure.d.ts +141 -0
  71. package/dist/esm/helpers/allure.d.ts.map +1 -0
  72. package/dist/esm/helpers/allure.mjs +306 -0
  73. package/dist/esm/helpers/allure.mjs.map +1 -0
  74. package/dist/esm/helpers/api.d.ts +69 -0
  75. package/dist/esm/helpers/api.d.ts.map +1 -0
  76. package/dist/esm/helpers/api.mjs +154 -0
  77. package/dist/esm/helpers/api.mjs.map +1 -0
  78. package/dist/esm/helpers/auth.d.ts +35 -0
  79. package/dist/esm/helpers/auth.d.ts.map +1 -0
  80. package/dist/esm/helpers/auth.mjs +96 -0
  81. package/dist/esm/helpers/auth.mjs.map +1 -0
  82. package/dist/esm/helpers/config.d.ts +34 -0
  83. package/dist/esm/helpers/config.d.ts.map +1 -0
  84. package/dist/esm/helpers/config.mjs +63 -0
  85. package/dist/esm/helpers/config.mjs.map +1 -0
  86. package/dist/esm/helpers/debug.d.ts +48 -0
  87. package/dist/esm/helpers/debug.d.ts.map +1 -0
  88. package/dist/esm/helpers/debug.mjs +76 -0
  89. package/dist/esm/helpers/debug.mjs.map +1 -0
  90. package/dist/esm/helpers/index.d.ts +8 -0
  91. package/dist/esm/helpers/index.d.ts.map +1 -0
  92. package/dist/esm/helpers/index.mjs +19 -0
  93. package/dist/esm/helpers/index.mjs.map +1 -0
  94. package/dist/esm/helpers/setup.d.ts +50 -0
  95. package/dist/esm/helpers/setup.d.ts.map +1 -0
  96. package/dist/esm/helpers/setup.mjs +95 -0
  97. package/dist/esm/helpers/setup.mjs.map +1 -0
  98. package/dist/esm/src/index.d.ts +17 -0
  99. package/dist/esm/src/index.d.ts.map +1 -0
  100. package/dist/esm/src/index.mjs +40 -0
  101. package/dist/esm/src/index.mjs.map +1 -0
  102. package/dist/types/config/index.d.ts +4 -0
  103. package/dist/types/config/index.d.ts.map +1 -0
  104. package/dist/types/config/playwright.component.config.d.ts +12 -0
  105. package/dist/types/config/playwright.component.config.d.ts.map +1 -0
  106. package/dist/types/config/playwright.config.d.ts +14 -0
  107. package/dist/types/config/playwright.config.d.ts.map +1 -0
  108. package/dist/types/config/vitest.config.d.ts +12 -0
  109. package/dist/types/config/vitest.config.d.ts.map +1 -0
  110. package/dist/types/helpers/allure.d.ts +141 -0
  111. package/dist/types/helpers/allure.d.ts.map +1 -0
  112. package/dist/types/helpers/api.d.ts +69 -0
  113. package/dist/types/helpers/api.d.ts.map +1 -0
  114. package/dist/types/helpers/auth.d.ts +35 -0
  115. package/dist/types/helpers/auth.d.ts.map +1 -0
  116. package/dist/types/helpers/config.d.ts +34 -0
  117. package/dist/types/helpers/config.d.ts.map +1 -0
  118. package/dist/types/helpers/debug.d.ts +48 -0
  119. package/dist/types/helpers/debug.d.ts.map +1 -0
  120. package/dist/types/helpers/index.d.ts +8 -0
  121. package/dist/types/helpers/index.d.ts.map +1 -0
  122. package/dist/types/helpers/setup.d.ts +50 -0
  123. package/dist/types/helpers/setup.d.ts.map +1 -0
  124. package/dist/types/src/index.d.ts +17 -0
  125. package/dist/types/src/index.d.ts.map +1 -0
  126. package/package.json +140 -0
  127. package/schematics/collection.json +11 -0
  128. package/schematics/ng-add/index.js +126 -0
  129. package/schematics/ng-add/schema.json +26 -0
  130. package/scripts/check-allure-results.mjs +300 -0
  131. package/scripts/rename-esm-files.mjs +76 -0
  132. package/types/allure.d.ts +76 -0
  133. package/types/global.d.ts +49 -0
@@ -0,0 +1,95 @@
1
+ import { generateUniqueUser, register } from './auth.mjs';
2
+ import { registerUserViaAPI } from './api.mjs';
3
+ /**
4
+ * Create a user in an isolated browser context
5
+ * This provides full isolation for tests
6
+ */
7
+ export async function createUserInIsolation(browser, user) {
8
+ const context = await browser.newContext();
9
+ const page = await context.newPage();
10
+ const uniqueUser = { ...generateUniqueUser(), ...user };
11
+ const result = await register(page, uniqueUser.username, uniqueUser.email, uniqueUser.password);
12
+ if (!result.success) {
13
+ await context.close();
14
+ throw new Error(result.error || 'Failed to create user in isolation');
15
+ }
16
+ return { context, page, user: uniqueUser };
17
+ }
18
+ /**
19
+ * Create a user via API (faster, no browser context needed)
20
+ */
21
+ export async function createUserViaAPI(request, user) {
22
+ const uniqueUser = { ...generateUniqueUser(), ...user };
23
+ const result = await registerUserViaAPI(request, uniqueUser);
24
+ return {
25
+ username: result.username,
26
+ email: result.email,
27
+ password: uniqueUser.password,
28
+ token: result.token
29
+ };
30
+ }
31
+ /**
32
+ * Setup authenticated page with token
33
+ */
34
+ export async function setupAuthenticatedPage(page, token) {
35
+ // Set token in localStorage
36
+ await page.goto('/');
37
+ await page.evaluate((t) => {
38
+ localStorage.setItem('token', t);
39
+ }, token);
40
+ // Reload to apply token
41
+ await page.reload();
42
+ }
43
+ /**
44
+ * Create multiple articles via API
45
+ */
46
+ export async function createManyArticles(request, token, count, baseTitle = 'Test Article') {
47
+ const { createArticleViaAPI } = await import('./api.js');
48
+ const articles = [];
49
+ for (let i = 0; i < count; i++) {
50
+ const article = await createArticleViaAPI(request, token, {
51
+ title: `${baseTitle} ${i + 1}`,
52
+ description: `Description for article ${i + 1}`,
53
+ body: `Body content for article ${i + 1}`,
54
+ tagList: ['test', `tag-${i}`],
55
+ });
56
+ articles.push(article);
57
+ }
58
+ return articles;
59
+ }
60
+ /**
61
+ * Cleanup helper for test data
62
+ */
63
+ export async function cleanupTestData(request, token, articles) {
64
+ const { deleteArticleViaAPI } = await import('./api.js');
65
+ await Promise.all(articles.map(article => deleteArticleViaAPI(request, token, article.slug).catch(() => {
66
+ // Ignore cleanup errors
67
+ })));
68
+ }
69
+ /**
70
+ * Wait for Angular to be stable
71
+ */
72
+ export async function waitForAngular(page) {
73
+ await page.waitForFunction(() => {
74
+ return window.getAngularTestability ?
75
+ window.getAngularTestability().isStable() : true;
76
+ });
77
+ }
78
+ /**
79
+ * Safe navigation with retry
80
+ */
81
+ export async function safeGoto(page, url, options = {}) {
82
+ const { timeout = 10000, retries = 3 } = options;
83
+ for (let i = 0; i < retries; i++) {
84
+ try {
85
+ await page.goto(url, { waitUntil: 'networkidle', timeout });
86
+ return;
87
+ }
88
+ catch (error) {
89
+ if (i === retries - 1)
90
+ throw error;
91
+ await page.waitForTimeout(1000);
92
+ }
93
+ }
94
+ }
95
+ // # sourceMappingURL=setup.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file": "setup.mjs","sourceRoot":"","sources":["../../../helpers/setup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * SamaroUItest - Comprehensive Testing Framework for Angular
3
+ *
4
+ * @packageDocumentation
5
+ */
6
+ import 'reflect-metadata';
7
+ export { createVitestConfig, createPlaywrightConfig, createComponentConfig, mergeConfig, type SamaroVitestOptions, type SamaroPlaywrightOptions, type SamaroComponentOptions, } from '../config/index.js';
8
+ export { setDebugInterfaceName, getDebugInterfaceName, getToken, getAuthState, getCurrentUser, waitForAuthState, isDebugInterfaceAvailable, getDebugData, type AuthState, type User, register, login, logout, generateUniqueUser, isLoggedIn, getCurrentUsername, type UserCredentials, type AuthResult, getAPIConfig, registerUserViaAPI, loginUserViaAPI, createArticleViaAPI, deleteArticleViaAPI, updateUserViaAPI, getCurrentUserViaAPI, type APIConfig, type APIUser, type APIAuthResponse, createUserInIsolation, createUserViaAPI, setupAuthenticatedPage, createManyArticles, cleanupTestData, waitForAngular, safeGoto, type TestUser, type IsolatedUserContext, getConfig, isCI, isDebug, getBrowserLaunchOptions, setTestEnv, type SamaroConfig, severity, tag, epic, feature, story, owner, description, descriptionHtml, link, issue, tms, allure, allureMeta, addLabel, addLink, addAttachment, attachScreenshot, attachJson, attachText, attachHtml, allureStep, getAllureMetadata, getAllureMetadataKeys, type Severity, type LinkType, type LabelName, type AllureMetadataOptions, type Label, type Link, type Parameter, type Attachment, type Status, type StatusDetails, type StepResult, type TestResult, type TestResultContainer, } from '../helpers/index.js';
9
+ /**
10
+ * Version of SamaroUItest
11
+ */
12
+ export declare const VERSION = "1.0.2";
13
+ /**
14
+ * Check if the package is properly installed
15
+ */
16
+ export declare function checkInstallation(): boolean;
17
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,kBAAkB,CAAC;AAG1B,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,EACrB,WAAW,EACX,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,EAC5B,KAAK,sBAAsB,GAC5B,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAEL,qBAAqB,EACrB,qBAAqB,EACrB,QAAQ,EACR,YAAY,EACZ,cAAc,EACd,gBAAgB,EAChB,yBAAyB,EACzB,YAAY,EACZ,KAAK,SAAS,EACd,KAAK,IAAI,EAGT,QAAQ,EACR,KAAK,EACL,MAAM,EACN,kBAAkB,EAClB,UAAU,EACV,kBAAkB,EAClB,KAAK,eAAe,EACpB,KAAK,UAAU,EAGf,YAAY,EACZ,kBAAkB,EAClB,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,oBAAoB,EACpB,KAAK,SAAS,EACd,KAAK,OAAO,EACZ,KAAK,eAAe,EAGpB,qBAAqB,EACrB,gBAAgB,EAChB,sBAAsB,EACtB,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,QAAQ,EACR,KAAK,QAAQ,EACb,KAAK,mBAAmB,EAGxB,SAAS,EACT,IAAI,EACJ,OAAO,EACP,uBAAuB,EACvB,UAAU,EACV,KAAK,YAAY,EAGjB,QAAQ,EACR,GAAG,EACH,IAAI,EACJ,OAAO,EACP,KAAK,EACL,KAAK,EACL,WAAW,EACX,eAAe,EACf,IAAI,EACJ,KAAK,EACL,GAAG,EACH,MAAM,EACN,UAAU,EACV,QAAQ,EACR,OAAO,EACP,aAAa,EACb,gBAAgB,EAChB,UAAU,EACV,UAAU,EACV,UAAU,EACV,UAAU,EACV,iBAAiB,EACjB,qBAAqB,EACrB,KAAK,QAAQ,EACb,KAAK,QAAQ,EACb,KAAK,SAAS,EACd,KAAK,qBAAqB,EAC1B,KAAK,KAAK,EACV,KAAK,IAAI,EACT,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,MAAM,EACX,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,mBAAmB,GACzB,MAAM,qBAAqB,CAAC;AAE7B;;GAEG;AACH,eAAO,MAAM,OAAO,UAAU,CAAC;AAE/B;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAO3C"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * SamaroUItest - Comprehensive Testing Framework for Angular
3
+ *
4
+ * @packageDocumentation
5
+ */
6
+ // Import reflect-metadata for decorator support
7
+ import 'reflect-metadata';
8
+ // Configuration exports
9
+ export { createVitestConfig, createPlaywrightConfig, createComponentConfig, mergeConfig, } from '../config/index.mjs';
10
+ // Helper exports
11
+ export {
12
+ // Debug
13
+ setDebugInterfaceName, getDebugInterfaceName, getToken, getAuthState, getCurrentUser, waitForAuthState, isDebugInterfaceAvailable, getDebugData,
14
+ // Auth
15
+ register, login, logout, generateUniqueUser, isLoggedIn, getCurrentUsername,
16
+ // API
17
+ getAPIConfig, registerUserViaAPI, loginUserViaAPI, createArticleViaAPI, deleteArticleViaAPI, updateUserViaAPI, getCurrentUserViaAPI,
18
+ // Setup
19
+ createUserInIsolation, createUserViaAPI, setupAuthenticatedPage, createManyArticles, cleanupTestData, waitForAngular, safeGoto,
20
+ // Config
21
+ getConfig, isCI, isDebug, getBrowserLaunchOptions, setTestEnv,
22
+ // Allure
23
+ severity, tag, epic, feature, story, owner, description, descriptionHtml, link, issue, tms, allure, allureMeta, addLabel, addLink, addAttachment, attachScreenshot, attachJson, attachText, attachHtml, allureStep, getAllureMetadata, getAllureMetadataKeys, } from '../helpers/index.mjs';
24
+ /**
25
+ * Version of SamaroUItest
26
+ */
27
+ export const VERSION = '1.0.2';
28
+ /**
29
+ * Check if the package is properly installed
30
+ */
31
+ export function checkInstallation() {
32
+ try {
33
+ // Try to import required dependencies
34
+ return true;
35
+ }
36
+ catch {
37
+ return false;
38
+ }
39
+ }
40
+ // # sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file": "index.mjs","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,gDAAgD;AAChD,OAAO,kBAAkB,CAAC;AAE1B,wBAAwB;AACxB,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,EACrB,WAAW,GAIZ,MAAM,oBAAoB,CAAC;AAE5B,iBAAiB;AACjB,OAAO;AACL,QAAQ;AACR,qBAAqB,EACrB,qBAAqB,EACrB,QAAQ,EACR,YAAY,EACZ,cAAc,EACd,gBAAgB,EAChB,yBAAyB,EACzB,YAAY;AAIZ,OAAO;AACP,QAAQ,EACR,KAAK,EACL,MAAM,EACN,kBAAkB,EAClB,UAAU,EACV,kBAAkB;AAIlB,MAAM;AACN,YAAY,EACZ,kBAAkB,EAClB,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,oBAAoB;AAKpB,QAAQ;AACR,qBAAqB,EACrB,gBAAgB,EAChB,sBAAsB,EACtB,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,QAAQ;AAIR,SAAS;AACT,SAAS,EACT,IAAI,EACJ,OAAO,EACP,uBAAuB,EACvB,UAAU;AAGV,SAAS;AACT,QAAQ,EACR,GAAG,EACH,IAAI,EACJ,OAAO,EACP,KAAK,EACL,KAAK,EACL,WAAW,EACX,eAAe,EACf,IAAI,EACJ,KAAK,EACL,GAAG,EACH,MAAM,EACN,UAAU,EACV,QAAQ,EACR,OAAO,EACP,aAAa,EACb,gBAAgB,EAChB,UAAU,EACV,UAAU,EACV,UAAU,EACV,UAAU,EACV,iBAAiB,EACjB,qBAAqB,GActB,MAAM,qBAAqB,CAAC;AAE7B;;GAEG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC;AAE/B;;GAEG;AACH,MAAM,UAAU,iBAAiB;IAC/B,IAAI,CAAC;QACH,sCAAsC;QACtC,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { createVitestConfig, mergeConfig, type SamaroVitestOptions } from './vitest.config.js';
2
+ export { createPlaywrightConfig, type SamaroPlaywrightOptions } from './playwright.config.js';
3
+ export { createComponentConfig, type SamaroComponentOptions } from './playwright.component.config.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,KAAK,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC/F,OAAO,EAAE,sBAAsB,EAAE,KAAK,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAC9F,OAAO,EAAE,qBAAqB,EAAE,KAAK,sBAAsB,EAAE,MAAM,kCAAkC,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { PlaywrightTestConfig } from '@playwright/test';
2
+ export interface SamaroComponentOptions {
3
+ baseURL?: string;
4
+ testDir?: string;
5
+ resultsDir?: string;
6
+ webServerCommand?: string;
7
+ webServerPort?: number;
8
+ }
9
+ export declare function createComponentConfig(options?: SamaroComponentOptions): PlaywrightTestConfig;
10
+ declare const _default: PlaywrightTestConfig;
11
+ export default _default;
12
+ //# sourceMappingURL=playwright.component.config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"playwright.component.config.d.ts","sourceRoot":"","sources":["../../../config/playwright.component.config.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAE7D,MAAM,WAAW,sBAAsB;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,qBAAqB,CAAC,OAAO,GAAE,sBAA2B,GAAG,oBAAoB,CA8ChG;;AAED,wBAAuC"}
@@ -0,0 +1,14 @@
1
+ import type { PlaywrightTestConfig } from '@playwright/test';
2
+ export interface SamaroPlaywrightOptions {
3
+ baseURL?: string;
4
+ testDir?: string;
5
+ resultsDir?: string;
6
+ webServerCommand?: string;
7
+ webServerPort?: number;
8
+ webServerTimeout?: number;
9
+ timeout?: number;
10
+ }
11
+ export declare function createPlaywrightConfig(options?: SamaroPlaywrightOptions): PlaywrightTestConfig;
12
+ declare const _default: PlaywrightTestConfig<{}, {}>;
13
+ export default _default;
14
+ //# sourceMappingURL=playwright.config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"playwright.config.d.ts","sourceRoot":"","sources":["../../../config/playwright.config.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAE7D,MAAM,WAAW,uBAAuB;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,sBAAsB,CAAC,OAAO,GAAE,uBAA4B,GAAG,oBAAoB,CA4DlG;;AAED,wBAAsD"}
@@ -0,0 +1,12 @@
1
+ import { mergeConfig } from 'vitest/config';
2
+ export interface SamaroVitestOptions {
3
+ projectRoot?: string;
4
+ testGlob?: string | string[];
5
+ resultsDir?: string;
6
+ setupFiles?: string[];
7
+ alias?: Record<string, string>;
8
+ }
9
+ export declare function createVitestConfig(options?: SamaroVitestOptions): import("vite", { with: { "resolution-mode": "import" } }).UserConfig;
10
+ export { mergeConfig };
11
+ export default createVitestConfig;
12
+ //# sourceMappingURL=vitest.config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vitest.config.d.ts","sourceRoot":"","sources":["../../../config/vitest.config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,WAAW,EAAE,MAAM,eAAe,CAAC;AAqB1D,MAAM,WAAW,mBAAmB;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC;AAED,wBAAgB,kBAAkB,CAAC,OAAO,GAAE,mBAAwB,wEA+CnE;AAED,OAAO,EAAE,WAAW,EAAE,CAAC;AACvB,eAAe,kBAAkB,CAAC"}
@@ -0,0 +1,141 @@
1
+ /**
2
+ * Allure Metadata Helpers for SamaroUItest
3
+ *
4
+ * Provides decorators and functions for adding Allure metadata to tests.
5
+ * Works with both Vitest and Playwright test frameworks.
6
+ */
7
+ export type Severity = 'blocker' | 'critical' | 'normal' | 'minor' | 'trivial';
8
+ export type LinkType = 'issue' | 'tms' | 'custom';
9
+ export type LabelName = 'epic' | 'feature' | 'story' | 'suite' | 'parentSuite' | 'subSuite' | 'owner' | 'severity' | 'tag' | 'layer' | 'host' | 'thread' | 'language' | 'framework' | 'package' | 'testClass' | 'testMethod';
10
+ /**
11
+ * Set test severity level
12
+ */
13
+ export declare function severity(level: Severity): (target: any, propertyKey?: string, descriptor?: PropertyDescriptor) => any;
14
+ /**
15
+ * Add tags/labels to test
16
+ */
17
+ export declare function tag(...tags: string[]): (target: any, propertyKey?: string, descriptor?: PropertyDescriptor) => any;
18
+ /**
19
+ * Set Epic for test hierarchy
20
+ */
21
+ export declare function epic(name: string): (target: any, propertyKey?: string, descriptor?: PropertyDescriptor) => any;
22
+ /**
23
+ * Set Feature for test hierarchy
24
+ */
25
+ export declare function feature(name: string): (target: any, propertyKey?: string, descriptor?: PropertyDescriptor) => any;
26
+ /**
27
+ * Set Story for test hierarchy
28
+ */
29
+ export declare function story(name: string): (target: any, propertyKey?: string, descriptor?: PropertyDescriptor) => any;
30
+ /**
31
+ * Set test owner
32
+ */
33
+ export declare function owner(name: string): (target: any, propertyKey?: string, descriptor?: PropertyDescriptor) => any;
34
+ /**
35
+ * Set test description
36
+ */
37
+ export declare function description(text: string): (target: any, propertyKey?: string, descriptor?: PropertyDescriptor) => any;
38
+ /**
39
+ * Set HTML description
40
+ */
41
+ export declare function descriptionHtml(html: string): (target: any, propertyKey?: string, descriptor?: PropertyDescriptor) => any;
42
+ /**
43
+ * Add link to external resource
44
+ */
45
+ export declare function link(url: string, name?: string, type?: LinkType): (target: any, propertyKey?: string, descriptor?: PropertyDescriptor) => any;
46
+ /**
47
+ * Add issue link
48
+ */
49
+ export declare function issue(url: string, name?: string): (target: any, propertyKey?: string, descriptor?: PropertyDescriptor) => any;
50
+ /**
51
+ * Add test management system link
52
+ */
53
+ export declare function tms(url: string, name?: string): (target: any, propertyKey?: string, descriptor?: PropertyDescriptor) => any;
54
+ /**
55
+ * Add Allure metadata to Playwright test
56
+ * Usage: test('my test', allureMeta({ severity: 'critical', tags: ['smoke'] }, async ({ page }) => { ... }))
57
+ */
58
+ export declare function allureMeta<T extends (...args: any[]) => any>(metadata: {
59
+ severity?: Severity;
60
+ tags?: string[];
61
+ epic?: string;
62
+ feature?: string;
63
+ story?: string;
64
+ owner?: string;
65
+ description?: string;
66
+ descriptionHtml?: string;
67
+ links?: Array<{
68
+ url: string;
69
+ name?: string;
70
+ type?: LinkType;
71
+ }>;
72
+ }, testFn: T): T;
73
+ /**
74
+ * Add custom label to Playwright test at runtime
75
+ */
76
+ export declare function addLabel(name: LabelName, value: string): Promise<void>;
77
+ /**
78
+ * Add custom link to Playwright test at runtime
79
+ */
80
+ export declare function addLink(url: string, name?: string, type?: LinkType): Promise<void>;
81
+ /**
82
+ * Add attachment to test at runtime
83
+ */
84
+ export declare function addAttachment(name: string, content: Buffer | string, type: string): Promise<void>;
85
+ /**
86
+ * Add screenshot attachment
87
+ */
88
+ export declare function attachScreenshot(name?: string, page?: any): Promise<void>;
89
+ /**
90
+ * Add JSON attachment
91
+ */
92
+ export declare function attachJson(name: string, data: any): Promise<void>;
93
+ /**
94
+ * Add text attachment
95
+ */
96
+ export declare function attachText(name: string, text: string): Promise<void>;
97
+ /**
98
+ * Add HTML attachment
99
+ */
100
+ export declare function attachHtml(name: string, html: string): Promise<void>;
101
+ /**
102
+ * Create a custom Allure step
103
+ */
104
+ export declare function allureStep<T>(name: string, body: () => Promise<T> | T): Promise<T>;
105
+ export interface AllureMetadataOptions {
106
+ severity?: Severity;
107
+ tags?: string[];
108
+ epic?: string;
109
+ feature?: string;
110
+ story?: string;
111
+ owner?: string;
112
+ description?: string;
113
+ descriptionHtml?: string;
114
+ links?: Array<{
115
+ url: string;
116
+ name?: string;
117
+ type?: LinkType;
118
+ }>;
119
+ issue?: string | {
120
+ url: string;
121
+ name?: string;
122
+ };
123
+ tms?: string | {
124
+ url: string;
125
+ name?: string;
126
+ };
127
+ }
128
+ /**
129
+ * Combined decorator for multiple Allure metadata
130
+ */
131
+ export declare function allure(options: AllureMetadataOptions): (target: any, propertyKey?: string, descriptor?: PropertyDescriptor) => any;
132
+ /**
133
+ * Get all Allure metadata for a class or method
134
+ */
135
+ export declare function getAllureMetadata(target: any, propertyKey?: string): AllureMetadataOptions | null;
136
+ /**
137
+ * Get metadata keys for a target
138
+ */
139
+ export declare function getAllureMetadataKeys(target: any, propertyKey?: string): string[];
140
+ export type { Label, Link, Parameter, Attachment, Status, StatusDetails, StepResult, TestResult, TestResultContainer, } from 'allure-js-commons';
141
+ //# sourceMappingURL=allure.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"allure.d.ts","sourceRoot":"","sources":["../../../helpers/allure.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,69 @@
1
+ import { APIRequestContext } from '@playwright/test';
2
+ export interface APIConfig {
3
+ baseURL: string;
4
+ }
5
+ export interface APIUser {
6
+ username: string;
7
+ email: string;
8
+ password: string;
9
+ }
10
+ export interface APIAuthResponse {
11
+ user: {
12
+ email: string;
13
+ token: string;
14
+ username: string;
15
+ bio: string | null;
16
+ image: string | null;
17
+ };
18
+ }
19
+ /**
20
+ * Get API configuration from environment variables
21
+ */
22
+ export declare function getAPIConfig(): APIConfig;
23
+ /**
24
+ * Register a user via API
25
+ */
26
+ export declare function registerUserViaAPI(request: APIRequestContext, user: APIUser): Promise<{
27
+ token: string;
28
+ username: string;
29
+ email: string;
30
+ }>;
31
+ /**
32
+ * Login a user via API
33
+ */
34
+ export declare function loginUserViaAPI(request: APIRequestContext, email: string, password: string): Promise<{
35
+ token: string;
36
+ username: string;
37
+ email: string;
38
+ }>;
39
+ /**
40
+ * Create an article via API
41
+ */
42
+ export declare function createArticleViaAPI(request: APIRequestContext, token: string, article: {
43
+ title: string;
44
+ description: string;
45
+ body: string;
46
+ tagList?: string[];
47
+ }): Promise<{
48
+ slug: string;
49
+ title: string;
50
+ }>;
51
+ /**
52
+ * Delete an article via API
53
+ */
54
+ export declare function deleteArticleViaAPI(request: APIRequestContext, token: string, slug: string): Promise<void>;
55
+ /**
56
+ * Update user via API
57
+ */
58
+ export declare function updateUserViaAPI(request: APIRequestContext, token: string, updates: {
59
+ email?: string;
60
+ bio?: string;
61
+ image?: string;
62
+ username?: string;
63
+ password?: string;
64
+ }): Promise<void>;
65
+ /**
66
+ * Get current user via API
67
+ */
68
+ export declare function getCurrentUserViaAPI(request: APIRequestContext, token: string): Promise<APIAuthResponse['user']>;
69
+ //# sourceMappingURL=api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../helpers/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,OAAO;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE;QACJ,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;QACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;KACtB,CAAC;CACH;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,SAAS,CAIxC;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,iBAAiB,EAC1B,IAAI,EAAE,OAAO,GACZ,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAyB7D;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,iBAAiB,EAC1B,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAyB7D;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,iBAAiB,EAC1B,KAAK,EAAE,MAAM,EACb,OAAO,EAAE;IACP,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB,GACA,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAyB1C;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,iBAAiB,EAC1B,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,IAAI,CAAC,CAiBf;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,iBAAiB,EAC1B,KAAK,EAAE,MAAM,EACb,OAAO,EAAE;IACP,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GACA,OAAO,CAAC,IAAI,CAAC,CAmBf;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,iBAAiB,EAC1B,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAoBlC"}
@@ -0,0 +1,35 @@
1
+ import { Page } from '@playwright/test';
2
+ export interface UserCredentials {
3
+ username: string;
4
+ email: string;
5
+ password: string;
6
+ }
7
+ export interface AuthResult {
8
+ success: boolean;
9
+ error?: string;
10
+ }
11
+ /**
12
+ * Register a new user via UI
13
+ */
14
+ export declare function register(page: Page, username: string, email: string, password: string): Promise<AuthResult>;
15
+ /**
16
+ * Login a user via UI
17
+ */
18
+ export declare function login(page: Page, email: string, password: string): Promise<AuthResult>;
19
+ /**
20
+ * Logout a user via UI
21
+ */
22
+ export declare function logout(page: Page): Promise<void>;
23
+ /**
24
+ * Generate unique user credentials to avoid conflicts
25
+ */
26
+ export declare function generateUniqueUser(): UserCredentials;
27
+ /**
28
+ * Check if user is logged in
29
+ */
30
+ export declare function isLoggedIn(page: Page): Promise<boolean>;
31
+ /**
32
+ * Get current username if logged in
33
+ */
34
+ export declare function getCurrentUsername(page: Page): Promise<string | null>;
35
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../helpers/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAExC,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAC5B,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,UAAU,CAAC,CAmBrB;AAED;;GAEG;AACH,wBAAsB,KAAK,CACzB,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,UAAU,CAAC,CAkBrB;AAED;;GAEG;AACH,wBAAsB,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBtD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,eAAe,CAQpD;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CAM7D;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAM3E"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Configuration helpers for SamaroUItest
3
+ */
4
+ export interface SamaroConfig {
5
+ apiMode: boolean;
6
+ apiBase: string;
7
+ debugInterfaceName: string;
8
+ timeouts: {
9
+ navigation: number;
10
+ action: number;
11
+ expectation: number;
12
+ };
13
+ }
14
+ /**
15
+ * Get SamaroUItest configuration from environment variables
16
+ */
17
+ export declare function getConfig(): SamaroConfig;
18
+ /**
19
+ * Check if running in CI environment
20
+ */
21
+ export declare function isCI(): boolean;
22
+ /**
23
+ * Check if running in debug mode
24
+ */
25
+ export declare function isDebug(): boolean;
26
+ /**
27
+ * Get browser launch options based on environment
28
+ */
29
+ export declare function getBrowserLaunchOptions(): Record<string, any>;
30
+ /**
31
+ * Set environment variables for test configuration
32
+ */
33
+ export declare function setTestEnv(vars: Partial<SamaroConfig>): void;
34
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../helpers/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,QAAQ,EAAE;QACR,UAAU,EAAE,MAAM,CAAC;QACnB,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;CACH;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,YAAY,CAWxC;AAED;;GAEG;AACH,wBAAgB,IAAI,IAAI,OAAO,CAE9B;AAED;;GAEG;AACH,wBAAgB,OAAO,IAAI,OAAO,CAEjC;AAED;;GAEG;AACH,wBAAgB,uBAAuB,wBAgBtC;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI,CAU5D"}
@@ -0,0 +1,48 @@
1
+ import { Page } from '@playwright/test';
2
+ export type AuthState = 'authenticated' | 'unauthenticated' | 'unavailable' | 'loading';
3
+ export interface User {
4
+ username: string;
5
+ email: string;
6
+ bio: string | null;
7
+ image: string | null;
8
+ token: string;
9
+ }
10
+ export declare function setDebugInterfaceName(name: string): void;
11
+ export declare function getDebugInterfaceName(): string;
12
+ /**
13
+ * Get the current JWT token from the app's debug interface.
14
+ * Returns null if no token is set or debug interface is not available.
15
+ */
16
+ export declare function getToken(page: Page): Promise<string | null>;
17
+ /**
18
+ * Get the current authentication state from the app's debug interface.
19
+ * Returns undefined if debug interface is not available.
20
+ */
21
+ export declare function getAuthState(page: Page): Promise<AuthState | undefined>;
22
+ /**
23
+ * Get the current user from the app's debug interface.
24
+ * Returns null if not authenticated or debug interface is not available.
25
+ */
26
+ export declare function getCurrentUser(page: Page): Promise<User | null>;
27
+ /**
28
+ * Wait for a specific auth state to be reached.
29
+ * Useful for waiting after login/logout operations.
30
+ */
31
+ export declare function waitForAuthState(page: Page, expectedState: AuthState, options?: {
32
+ timeout?: number;
33
+ }): Promise<void>;
34
+ /**
35
+ * Check if the debug interface is available.
36
+ * Can be used to skip tests if implementation doesn't support it.
37
+ */
38
+ export declare function isDebugInterfaceAvailable(page: Page): Promise<boolean>;
39
+ /**
40
+ * Get all debug data at once (token, auth state, user)
41
+ */
42
+ export declare function getDebugData(page: Page): Promise<{
43
+ token: string | null;
44
+ authState: AuthState | undefined;
45
+ user: User | null;
46
+ available: boolean;
47
+ }>;
48
+ //# sourceMappingURL=debug.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debug.d.ts","sourceRoot":"","sources":["../../../helpers/debug.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAExC,MAAM,MAAM,SAAS,GAAG,eAAe,GAAG,iBAAiB,GAAG,aAAa,GAAG,SAAS,CAAC;AAExF,MAAM,WAAW,IAAI;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;CACf;AAOD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAExD;AAED,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAED;;;GAGG;AACH,wBAAsB,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAKjE;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,CAK7E;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,CAKrE;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,IAAI,EACV,aAAa,EAAE,SAAS,EACxB,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,GACjC,OAAO,CAAC,IAAI,CAAC,CAUf;AAED;;;GAGG;AACH,wBAAsB,yBAAyB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CAI5E;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC;IACtD,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,SAAS,GAAG,SAAS,CAAC;IACjC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC,CAcD"}
@@ -0,0 +1,8 @@
1
+ export { setDebugInterfaceName, getDebugInterfaceName, getToken, getAuthState, getCurrentUser, waitForAuthState, isDebugInterfaceAvailable, getDebugData, type AuthState, type User, } from './debug.js';
2
+ export { register, login, logout, generateUniqueUser, isLoggedIn, getCurrentUsername, type UserCredentials, type AuthResult, } from './auth.js';
3
+ export { getAPIConfig, registerUserViaAPI, loginUserViaAPI, createArticleViaAPI, deleteArticleViaAPI, updateUserViaAPI, getCurrentUserViaAPI, type APIConfig, type APIUser, type APIAuthResponse, } from './api.js';
4
+ export { createUserInIsolation, createUserViaAPI, setupAuthenticatedPage, createManyArticles, cleanupTestData, waitForAngular, safeGoto, type TestUser, type IsolatedUserContext, } from './setup.js';
5
+ export { getConfig, isCI, isDebug, getBrowserLaunchOptions, setTestEnv, type SamaroConfig, } from './config.js';
6
+ export { severity, tag, epic, feature, story, owner, description, descriptionHtml, link, issue, tms, allure, allureMeta, addLabel, addLink, addAttachment, attachScreenshot, attachJson, attachText, attachHtml, allureStep, getAllureMetadata, getAllureMetadataKeys, type Severity, type LinkType, type LabelName, type AllureMetadataOptions, } from './allure.js';
7
+ export type { Label, Link, Parameter, Attachment, Status, StatusDetails, StepResult, TestResult, TestResultContainer, } from 'allure-js-commons';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../helpers/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,QAAQ,EACR,YAAY,EACZ,cAAc,EACd,gBAAgB,EAChB,yBAAyB,EACzB,YAAY,EACZ,KAAK,SAAS,EACd,KAAK,IAAI,GACV,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,QAAQ,EACR,KAAK,EACL,MAAM,EACN,kBAAkB,EAClB,UAAU,EACV,kBAAkB,EAClB,KAAK,eAAe,EACpB,KAAK,UAAU,GAChB,MAAM,WAAW,CAAC;AAGnB,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,oBAAoB,EACpB,KAAK,SAAS,EACd,KAAK,OAAO,EACZ,KAAK,eAAe,GACrB,MAAM,UAAU,CAAC;AAGlB,OAAO,EACL,qBAAqB,EACrB,gBAAgB,EAChB,sBAAsB,EACtB,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,QAAQ,EACR,KAAK,QAAQ,EACb,KAAK,mBAAmB,GACzB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,SAAS,EACT,IAAI,EACJ,OAAO,EACP,uBAAuB,EACvB,UAAU,EACV,KAAK,YAAY,GAClB,MAAM,aAAa,CAAC;AAGrB,OAAO,EAEL,QAAQ,EACR,GAAG,EACH,IAAI,EACJ,OAAO,EACP,KAAK,EACL,KAAK,EACL,WAAW,EACX,eAAe,EACf,IAAI,EACJ,KAAK,EACL,GAAG,EACH,MAAM,EAGN,UAAU,EACV,QAAQ,EACR,OAAO,EACP,aAAa,EACb,gBAAgB,EAChB,UAAU,EACV,UAAU,EACV,UAAU,EACV,UAAU,EAGV,iBAAiB,EACjB,qBAAqB,EAGrB,KAAK,QAAQ,EACb,KAAK,QAAQ,EACb,KAAK,SAAS,EACd,KAAK,qBAAqB,GAC3B,MAAM,aAAa,CAAC;AAGrB,YAAY,EACV,KAAK,EACL,IAAI,EACJ,SAAS,EACT,UAAU,EACV,MAAM,EACN,aAAa,EACb,UAAU,EACV,UAAU,EACV,mBAAmB,GACpB,MAAM,mBAAmB,CAAC"}