@iblai/iblai-js 1.0.17 → 1.0.18

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 (65) hide show
  1. package/dist/data-layer/playwright/auth-flow-builder.d.ts +13 -0
  2. package/dist/data-layer/playwright/auth-helpers.d.ts +10 -0
  3. package/dist/data-layer/playwright/auth-setup.d.ts +34 -0
  4. package/dist/data-layer/playwright/custom-reporter.d.ts +12 -0
  5. package/dist/data-layer/playwright/env-config.d.ts +24 -0
  6. package/dist/data-layer/playwright/helpers.d.ts +11 -0
  7. package/dist/data-layer/playwright/index.d.ts +17 -0
  8. package/dist/data-layer/playwright/logger.d.ts +3 -0
  9. package/dist/data-layer/playwright/mail-client.d.ts +46 -0
  10. package/dist/data-layer/playwright/navigation.d.ts +26 -0
  11. package/dist/data-layer/playwright/page-helpers.d.ts +38 -0
  12. package/dist/data-layer/playwright/playwright-config.d.ts +81 -0
  13. package/dist/data-layer/playwright/shared-test-helpers.d.ts +25 -0
  14. package/dist/package.json +18 -2
  15. package/dist/playwright/data-layer/index.d.ts +1 -0
  16. package/dist/playwright/index.d.ts +331 -0
  17. package/dist/playwright/index.esm.js +1543 -0
  18. package/dist/playwright/index.esm.js.map +1 -0
  19. package/dist/playwright/index.js +1597 -0
  20. package/dist/playwright/index.js.map +1 -0
  21. package/dist/playwright/playwright/auth-flow-builder.d.ts +13 -0
  22. package/dist/playwright/playwright/auth-helpers.d.ts +10 -0
  23. package/dist/playwright/playwright/auth-setup.d.ts +34 -0
  24. package/dist/playwright/playwright/custom-reporter.d.ts +12 -0
  25. package/dist/playwright/playwright/env-config.d.ts +24 -0
  26. package/dist/playwright/playwright/helpers.d.ts +11 -0
  27. package/dist/playwright/playwright/index.d.ts +17 -0
  28. package/dist/playwright/playwright/logger.d.ts +3 -0
  29. package/dist/playwright/playwright/mail-client.d.ts +46 -0
  30. package/dist/playwright/playwright/navigation.d.ts +26 -0
  31. package/dist/playwright/playwright/page-helpers.d.ts +38 -0
  32. package/dist/playwright/playwright/playwright-config.d.ts +81 -0
  33. package/dist/playwright/playwright/shared-test-helpers.d.ts +25 -0
  34. package/dist/playwright/web-containers/index.d.ts +1 -0
  35. package/dist/playwright/web-containers/next.d.ts +1 -0
  36. package/dist/playwright/web-containers/sso.d.ts +1 -0
  37. package/dist/playwright/web-utils/index.d.ts +1 -0
  38. package/dist/web-containers/playwright/auth-flow-builder.d.ts +13 -0
  39. package/dist/web-containers/playwright/auth-helpers.d.ts +10 -0
  40. package/dist/web-containers/playwright/auth-setup.d.ts +34 -0
  41. package/dist/web-containers/playwright/custom-reporter.d.ts +12 -0
  42. package/dist/web-containers/playwright/env-config.d.ts +24 -0
  43. package/dist/web-containers/playwright/helpers.d.ts +11 -0
  44. package/dist/web-containers/playwright/index.d.ts +17 -0
  45. package/dist/web-containers/playwright/logger.d.ts +3 -0
  46. package/dist/web-containers/playwright/mail-client.d.ts +46 -0
  47. package/dist/web-containers/playwright/navigation.d.ts +26 -0
  48. package/dist/web-containers/playwright/page-helpers.d.ts +38 -0
  49. package/dist/web-containers/playwright/playwright-config.d.ts +81 -0
  50. package/dist/web-containers/playwright/shared-test-helpers.d.ts +25 -0
  51. package/dist/web-containers/source/index.esm.js +47 -98
  52. package/dist/web-utils/playwright/auth-flow-builder.d.ts +13 -0
  53. package/dist/web-utils/playwright/auth-helpers.d.ts +10 -0
  54. package/dist/web-utils/playwright/auth-setup.d.ts +34 -0
  55. package/dist/web-utils/playwright/custom-reporter.d.ts +12 -0
  56. package/dist/web-utils/playwright/env-config.d.ts +24 -0
  57. package/dist/web-utils/playwright/helpers.d.ts +11 -0
  58. package/dist/web-utils/playwright/index.d.ts +17 -0
  59. package/dist/web-utils/playwright/logger.d.ts +3 -0
  60. package/dist/web-utils/playwright/mail-client.d.ts +46 -0
  61. package/dist/web-utils/playwright/navigation.d.ts +26 -0
  62. package/dist/web-utils/playwright/page-helpers.d.ts +38 -0
  63. package/dist/web-utils/playwright/playwright-config.d.ts +81 -0
  64. package/dist/web-utils/playwright/shared-test-helpers.d.ts +25 -0
  65. package/package.json +20 -4
@@ -0,0 +1,13 @@
1
+ import { Page } from '@playwright/test';
2
+ import { StepFn } from './helpers';
3
+ export declare class AuthFlowBuilder {
4
+ flow: string;
5
+ idp: string;
6
+ authHost: string;
7
+ constructor(flow?: string, idp?: string, authHost?: string);
8
+ run(page: Page, step: StepFn, username: string, password: string, hostUrl: string, authUrl: string, postLoginUrlMatcher?: (url: URL) => boolean): Promise<void>;
9
+ usernamePasswordFlow(page: Page, username: string, password: string, hostUrl: string, authUrl: string, postLoginUrlMatcher?: (url: URL) => boolean): Promise<void>;
10
+ magicLinkFlow(page: Page): Promise<void>;
11
+ ssoFlow(page: Page, username: string, password: string, hostUrl: string, authUrl: string): Promise<void>;
12
+ directSsoFlow(page: Page, step: StepFn, username: string, password: string, hostUrl: string, authUrl: string): Promise<void>;
13
+ }
@@ -0,0 +1,10 @@
1
+ import { Locator, Page } from '@playwright/test';
2
+ export interface SignUpCredentials {
3
+ email: string;
4
+ password: string;
5
+ }
6
+ export declare function signUpWithEmailAndPassword(page: Page, authHost: string, postSignUpUrl: string, credentials?: SignUpCredentials, alreadyInSignupPage?: boolean): Promise<void>;
7
+ export declare function loginWithEmailAndPassword(page: Page, username: string, password: string, hostUrl: string, postLoginUrlMatcher?: (url: URL) => boolean): Promise<void>;
8
+ export declare function loginWithMicrosoftIdp(page: Page, username: string, password: string): Promise<void>;
9
+ export declare function canChatWithEmbedMentor(page: Page, openChatButton: Locator): Promise<void>;
10
+ export declare function getMentorIdFromUrl(url: string): string | null;
@@ -0,0 +1,34 @@
1
+ export interface AuthSetupConfig {
2
+ /** The app's host URL (e.g., https://mentor.example.com) */
3
+ hostUrl: string;
4
+ /** The auth service host URL (e.g., https://auth.example.com) */
5
+ authHost: string;
6
+ /** App name used in the login redirect URL (e.g., 'mentor', 'skills') */
7
+ appName: string;
8
+ /** Function to match the post-login URL to confirm authentication succeeded */
9
+ postLoginUrlMatcher: (url: URL) => boolean;
10
+ /** Auth flow type. Defaults to reading AUTH_FLOW env var or 'username_password' */
11
+ authFlow?: 'username_password' | 'magic_link' | 'sso' | 'direct_sso';
12
+ /** Auth IDP name for SSO flows */
13
+ authIdp?: string;
14
+ }
15
+ /**
16
+ * Creates a Playwright setup test function for authentication.
17
+ * Use this as the test body in your auth.setup.ts file:
18
+ *
19
+ * ```ts
20
+ * import { test as setup } from '@iblai/iblai-js/playwright';
21
+ * import { createAuthSetup } from '@iblai/iblai-js/playwright';
22
+ *
23
+ * setup('authenticate', createAuthSetup({
24
+ * hostUrl: process.env.MENTOR_NEXTJS_HOST || '',
25
+ * authHost: process.env.AUTH_HOST || '',
26
+ * appName: 'mentor',
27
+ * postLoginUrlMatcher: (url) => url.href.includes('/platform/'),
28
+ * }));
29
+ * ```
30
+ */
31
+ export declare function createAuthSetup(config: AuthSetupConfig): ({ browser, step }: {
32
+ browser: any;
33
+ step: any;
34
+ }, testInfo: any) => Promise<void>;
@@ -0,0 +1,12 @@
1
+ import { FullConfig, FullResult, Reporter, Suite, TestCase, TestResult } from '@playwright/test/reporter';
2
+ export default class CustomReporter implements Reporter {
3
+ onBegin(config: FullConfig, suite: Suite): void;
4
+ onTestBegin(test: TestCase): void;
5
+ onTestEnd(test: TestCase, result: TestResult): void;
6
+ onTimeout(timeout: number): void;
7
+ onEnd(result: FullResult): Promise<{
8
+ status?: FullResult['status'];
9
+ } | undefined | void> | void;
10
+ onStdOut(chunk: string | Buffer, test: void | TestCase, result: void | TestResult): void;
11
+ onStdErr(chunk: string | Buffer, test: void | TestCase, result: void | TestResult): void;
12
+ }
@@ -0,0 +1,24 @@
1
+ export type AuthFlowType = 'username_password' | 'magic_link' | 'sso' | 'direct_sso';
2
+ export interface EnvConfig {
3
+ skillHost: string;
4
+ authHost: string;
5
+ analyticsHost: string;
6
+ mentorHost: string;
7
+ mentorNextjsHost: string;
8
+ authNextjsHost: string;
9
+ playwrightUsername: string;
10
+ playwrightPassword: string;
11
+ inviteUsername: string;
12
+ inviteUserPassword: string;
13
+ authFlow: AuthFlowType;
14
+ authIdp: string;
15
+ enableStripeTest: boolean;
16
+ iblMentorDisabledTabs: string;
17
+ embedUrl: string;
18
+ wcagRange: string;
19
+ }
20
+ /**
21
+ * Create an environment configuration object from process.env with optional overrides.
22
+ * Each app can call this with their specific defaults.
23
+ */
24
+ export declare function createEnvConfig(overrides?: Partial<EnvConfig>): EnvConfig;
@@ -0,0 +1,11 @@
1
+ import { expect, Page } from '@playwright/test';
2
+ export declare function waitForPageLoad(page: Page): Promise<void>;
3
+ export declare function closeWithEsc(page: Page): Promise<void>;
4
+ export type StepFn = (title: string, fn: () => unknown) => unknown;
5
+ export declare const test: import("@playwright/test").TestType<import("@playwright/test").PlaywrightTestArgs & import("@playwright/test").PlaywrightTestOptions & {
6
+ step: StepFn;
7
+ }, import("@playwright/test").PlaywrightWorkerArgs & import("@playwright/test").PlaywrightWorkerOptions>;
8
+ export declare const retry: (action: () => Promise<void>, errorMessage: string, retryCount?: number) => Promise<void>;
9
+ export { expect };
10
+ export declare const isJSON: (value: string) => boolean;
11
+ export { safeWaitForURL, isFirefox } from './navigation';
@@ -0,0 +1,17 @@
1
+ export { test, expect, waitForPageLoad, closeWithEsc, retry, isJSON, safeWaitForURL, isFirefox } from './helpers';
2
+ export type { StepFn } from './helpers';
3
+ export type { SafeWaitForURLOptions } from './navigation';
4
+ export { logger } from './logger';
5
+ export { MailsacClient } from './mail-client';
6
+ export { AuthFlowBuilder } from './auth-flow-builder';
7
+ export { signUpWithEmailAndPassword, loginWithEmailAndPassword, loginWithMicrosoftIdp, canChatWithEmbedMentor, getMentorIdFromUrl, } from './auth-helpers';
8
+ export type { SignUpCredentials } from './auth-helpers';
9
+ export { createAuthSetup } from './auth-setup';
10
+ export type { AuthSetupConfig } from './auth-setup';
11
+ export { default as CustomReporter } from './custom-reporter';
12
+ export { waitForPageReady, checkAdminStatus, waitForElementStable, reliableClick, reliableFill, waitForDialogReady, selectDateFromCalendar, expectNoAccessibilityViolations, expectNoAccessibilityViolationsOnDialogs, } from './page-helpers';
13
+ export { inviteUserTest, navigateToAccountComponent, navigateToDataReports, shouldDisplayReportCards, shouldOpenCSVEditorDialog, shouldDisplayCSVInEditableTableFormat, shouldAllowEditingCellValuesInCSVEditor, shouldAddNewRowWhenClickingAddRowButton, shouldSaveEditedCSVAndTriggerDownload, shouldCloseCSVEditorWithoutSavingWhenClickingCancel, shouldCloseCSVEditorWhenClickingCloseButton, shouldVerifyCSVEditorDialogAccessibility, shouldOpenCSVEditorForUserMetadataReport, shouldDirectlyDownloadChatHistoryReportWithoutCSVEditor, shouldDisableOtherDownloadButtonsWhileGeneratingReport, shouldShowCombiningReportsDialog, shouldCancelCombiningReports, shouldHaveCombinedReportDataTestIds, shouldCombineRecommendationReports, } from './shared-test-helpers';
14
+ export { createEnvConfig } from './env-config';
15
+ export type { EnvConfig, AuthFlowType } from './env-config';
16
+ export { createPlaywrightConfig, generateProjectConfig, generateBrowserSetupProjects, getBrowserKey, } from './playwright-config';
17
+ export type { PlatformConfig, CreatePlaywrightConfigOptions, } from './playwright-config';
@@ -0,0 +1,3 @@
1
+ import winston from 'winston';
2
+ declare const logger: winston.Logger;
3
+ export { logger };
@@ -0,0 +1,46 @@
1
+ interface MailsacEmail {
2
+ _id: string;
3
+ from: Array<{
4
+ address: string;
5
+ name?: string;
6
+ }>;
7
+ to: Array<{
8
+ address: string;
9
+ name?: string;
10
+ }>;
11
+ subject: string;
12
+ inbox: string;
13
+ received: string;
14
+ size: number;
15
+ attachments: string[];
16
+ ip: string;
17
+ via: string;
18
+ folder: string;
19
+ labels: string[];
20
+ read: boolean;
21
+ rtls: boolean;
22
+ originalInbox: string;
23
+ spam: boolean;
24
+ }
25
+ export declare class MailsacClient {
26
+ private apiKey;
27
+ private baseUrl;
28
+ constructor(apiKey: string);
29
+ /**
30
+ * Get all emails for a specific inbox
31
+ * @param inbox - The inbox address (e.g., 'test@mailsac.com' or just 'test')
32
+ */
33
+ getEmails(inbox: string): Promise<MailsacEmail[]>;
34
+ /**
35
+ * Get a specific email by ID
36
+ * @param email - The email address
37
+ * @param messageId - The ID of the email to fetch
38
+ */
39
+ getEmailById(email: string, messageId: string): Promise<string>;
40
+ /**
41
+ * Delete a specific email by ID
42
+ * @param emailId - The ID of the email to delete
43
+ */
44
+ deleteEmail(emailId: string): Promise<any>;
45
+ }
46
+ export {};
@@ -0,0 +1,26 @@
1
+ import { Page } from '@playwright/test';
2
+ export interface SafeWaitForURLOptions {
3
+ timeout?: number;
4
+ waitUntil?: 'commit' | 'domcontentloaded' | 'load' | 'networkidle';
5
+ maxRetries?: number;
6
+ }
7
+ /**
8
+ * Check if the current browser is Firefox
9
+ */
10
+ export declare function isFirefox(page: Page): boolean;
11
+ /**
12
+ * Safe wrapper around page.waitForURL that handles browser-specific navigation errors
13
+ *
14
+ * Firefox has stricter navigation lifecycle handling that can cause NS_BINDING_ABORTED
15
+ * errors when multiple rapid navigations occur (React router redirects, auth redirects).
16
+ *
17
+ * Safari can throw "Navigation canceled by policy check" errors during cross-origin
18
+ * navigations or when security policies interrupt the navigation flow.
19
+ *
20
+ * This utility:
21
+ * 1. Uses `waitUntil: 'commit'` for Firefox (faster, avoids abort)
22
+ * 2. Includes retry logic for NS_BINDING_ABORTED errors (Firefox)
23
+ * 3. Handles "Navigation canceled by policy check" errors (Safari)
24
+ * 4. Checks if URL is already correct before failing
25
+ */
26
+ export declare function safeWaitForURL(page: Page, urlPattern: string | RegExp | ((url: URL) => boolean), options?: SafeWaitForURLOptions): Promise<void>;
@@ -0,0 +1,38 @@
1
+ import { Locator, Page } from '@playwright/test';
2
+ import type { RuleObject } from 'axe-core';
3
+ /**
4
+ * Wait for a page to be fully ready (DOM complete + brief delay for lazy rendering)
5
+ */
6
+ export declare function waitForPageReady(page: Page, timeout?: number): Promise<void>;
7
+ /**
8
+ * Check if the current user is an admin by reading localStorage
9
+ */
10
+ export declare function checkAdminStatus(page: Page): Promise<boolean>;
11
+ /**
12
+ * Wait for an element to be fully stable (attached, visible, not animating)
13
+ */
14
+ export declare function waitForElementStable(page: Page, locator: Locator, timeout?: number): Promise<Locator>;
15
+ /**
16
+ * Click an element with retry logic and stability checks
17
+ */
18
+ export declare function reliableClick(page: Page, locator: Locator, timeout?: number, maxRetries?: number): Promise<void>;
19
+ /**
20
+ * Fill an input element with retry logic, clearing first and verifying the value
21
+ */
22
+ export declare function reliableFill(page: Page, locator: Locator, value: string, timeout?: number, maxRetries?: number): Promise<void>;
23
+ /**
24
+ * Wait for a dialog element to be visible and its content loaded
25
+ */
26
+ export declare function waitForDialogReady(page: Page, dialogLocator: Locator, timeout?: number): Promise<Locator>;
27
+ /**
28
+ * Select a date from a calendar component, navigating months if needed
29
+ */
30
+ export declare function selectDateFromCalendar(page: Page, dialogLocator: Locator, targetDate: Date, timeout?: number): Promise<void>;
31
+ /**
32
+ * Run axe-core accessibility checks against a page
33
+ */
34
+ export declare function expectNoAccessibilityViolations(page: Page): Promise<void>;
35
+ /**
36
+ * Run axe-core accessibility checks against visible dialogs
37
+ */
38
+ export declare function expectNoAccessibilityViolationsOnDialogs(page: Page, rules?: RuleObject, exclude?: string[]): Promise<void>;
@@ -0,0 +1,81 @@
1
+ import { type PlaywrightTestConfig } from '@playwright/test';
2
+ export interface PlatformConfig {
3
+ /** Platform name used in project naming (e.g., 'mentornextjs', 'skills') */
4
+ name: string;
5
+ /** Devices to test on. Defaults to all 4 desktop browsers */
6
+ devices?: string[];
7
+ /** Dependencies for this platform (e.g., ['setup']) */
8
+ dependencies?: string[];
9
+ /** Additional test file patterns to match */
10
+ otherTestMatch?: string[];
11
+ /** Test files to ignore */
12
+ testIgnore?: string[];
13
+ }
14
+ export interface CreatePlaywrightConfigOptions {
15
+ /** Directory containing test files (relative to config file) */
16
+ testDir?: string;
17
+ /** Devices to use across all platforms. Defaults to Chrome, Firefox, Safari, Edge */
18
+ devices?: string[];
19
+ /** Platform configurations */
20
+ platforms: PlatformConfig[];
21
+ /** Path to custom reporter module (relative to config file). Defaults to './custom-reporter' */
22
+ customReporterPath?: string;
23
+ /** Additional cleanup or post-test projects */
24
+ extraProjects?: Array<{
25
+ name: string;
26
+ devices?: string[];
27
+ dependencies: string[];
28
+ testMatch: string[];
29
+ }>;
30
+ }
31
+ /** Extract browser key from device name (e.g., 'Desktop Chrome' -> 'chrome') */
32
+ export declare function getBrowserKey(deviceName: string): string;
33
+ /**
34
+ * Generate per-browser setup projects for Playwright authentication.
35
+ * Each browser gets its own auth setup project (setup-chrome, setup-firefox, etc.)
36
+ */
37
+ export declare function generateBrowserSetupProjects(devicesToUse: string[]): {
38
+ name: string;
39
+ testMatch: RegExp;
40
+ use: {
41
+ viewport: import("@playwright/test").ViewportSize;
42
+ userAgent: string;
43
+ deviceScaleFactor: number;
44
+ isMobile: boolean;
45
+ hasTouch: boolean;
46
+ defaultBrowserType: "chromium" | "firefox" | "webkit";
47
+ };
48
+ }[];
49
+ /**
50
+ * Generate a Playwright project config for a platform + device combination.
51
+ */
52
+ export declare function generateProjectConfig(platform: string, deviceName: string, dependencies?: string[], otherTestMatch?: string[], testIgnoreMatch?: string[]): {
53
+ name: string;
54
+ testMatch: string[];
55
+ use: {
56
+ storageState: string;
57
+ viewport: import("@playwright/test").ViewportSize;
58
+ userAgent: string;
59
+ deviceScaleFactor: number;
60
+ isMobile: boolean;
61
+ hasTouch: boolean;
62
+ defaultBrowserType: "chromium" | "firefox" | "webkit";
63
+ };
64
+ dependencies: string[];
65
+ testIgnore: string[];
66
+ };
67
+ /**
68
+ * Create a complete Playwright configuration for an IBL.ai application.
69
+ *
70
+ * Usage:
71
+ * ```ts
72
+ * import { createPlaywrightConfig } from '@iblai/iblai-js/playwright';
73
+ *
74
+ * export default createPlaywrightConfig({
75
+ * platforms: [
76
+ * { name: 'skills', dependencies: ['setup'], otherTestMatch: ['**skills/*\/*.spec.ts'] },
77
+ * ],
78
+ * });
79
+ * ```
80
+ */
81
+ export declare function createPlaywrightConfig(options: CreatePlaywrightConfigOptions): PlaywrightTestConfig;
@@ -0,0 +1,25 @@
1
+ import { Locator, Page } from '@playwright/test';
2
+ export declare function inviteUserTest(page: Page, inviteModal: Locator): Promise<void>;
3
+ export declare function navigateToAccountComponent(page: Page, profileBtn: Locator): Promise<Locator>;
4
+ export declare function navigateToDataReports(page: Page): Promise<void>;
5
+ export declare function shouldDisplayReportCards(page: Page, REPORT_CARDS: {
6
+ name: string;
7
+ ariaLabel: string;
8
+ description: string;
9
+ expectsCsvEditor: boolean;
10
+ }[]): Promise<void>;
11
+ export declare function shouldOpenCSVEditorDialog(page: Page): Promise<void>;
12
+ export declare function shouldDisplayCSVInEditableTableFormat(page: Page): Promise<void>;
13
+ export declare function shouldAllowEditingCellValuesInCSVEditor(page: Page): Promise<void>;
14
+ export declare function shouldAddNewRowWhenClickingAddRowButton(page: Page): Promise<void>;
15
+ export declare function shouldSaveEditedCSVAndTriggerDownload(page: Page): Promise<void>;
16
+ export declare function shouldCloseCSVEditorWithoutSavingWhenClickingCancel(page: Page): Promise<void>;
17
+ export declare function shouldCloseCSVEditorWhenClickingCloseButton(page: Page): Promise<void>;
18
+ export declare function shouldVerifyCSVEditorDialogAccessibility(page: Page): Promise<void>;
19
+ export declare function shouldOpenCSVEditorForUserMetadataReport(page: Page): Promise<void>;
20
+ export declare function shouldDirectlyDownloadChatHistoryReportWithoutCSVEditor(page: Page): Promise<void>;
21
+ export declare function shouldDisableOtherDownloadButtonsWhileGeneratingReport(page: Page): Promise<void>;
22
+ export declare function shouldShowCombiningReportsDialog(page: Page): Promise<void>;
23
+ export declare function shouldCancelCombiningReports(page: Page): Promise<void>;
24
+ export declare function shouldHaveCombinedReportDataTestIds(page: Page): Promise<void>;
25
+ export declare function shouldCombineRecommendationReports(page: Page): Promise<void>;
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@iblai/iblai-js",
3
- "version": "1.0.17",
3
+ "version": "1.0.18",
4
4
  "description": "Unified JavaScript SDK for IBL.ai — re-exports data-layer, web-containers, and web-utils under a single package",
5
5
  "type": "module",
6
6
  "engines": {
@@ -37,6 +37,11 @@
37
37
  "types": "./dist/web-utils/index.d.ts",
38
38
  "import": "./dist/web-utils/index.esm.js",
39
39
  "require": "./dist/web-utils/index.js"
40
+ },
41
+ "./playwright": {
42
+ "types": "./dist/playwright/index.d.ts",
43
+ "import": "./dist/playwright/index.esm.js",
44
+ "require": "./dist/playwright/index.js"
40
45
  }
41
46
  },
42
47
  "scripts": {
@@ -67,17 +72,28 @@
67
72
  "peerDependenciesMeta": {
68
73
  "next": {
69
74
  "optional": true
75
+ },
76
+ "@playwright/test": {
77
+ "optional": true
78
+ },
79
+ "@axe-core/playwright": {
80
+ "optional": true
70
81
  }
71
82
  },
72
83
  "devDependencies": {
84
+ "@axe-core/playwright": "^4.11.1",
85
+ "@playwright/test": "^1.58.2",
73
86
  "@rollup/plugin-node-resolve": "15.3.1",
74
87
  "@rollup/plugin-typescript": "11.1.6",
88
+ "axe-core": "^4.11.1",
89
+ "axios": "^1.13.5",
75
90
  "rollup": "4.40.0",
76
91
  "rollup-plugin-copy": "^3.5.0",
77
92
  "rollup-plugin-dts": "^6.3.0",
78
93
  "rollup-plugin-peer-deps-external": "2.2.4",
79
94
  "tslib": "2.8.1",
80
- "typescript": "5.8.3"
95
+ "typescript": "5.8.3",
96
+ "winston": "^3.19.0"
81
97
  },
82
98
  "packageManager": "pnpm@10.11.0",
83
99
  "publishConfig": {
@@ -0,0 +1 @@
1
+ export * from '@iblai/data-layer';