@applitools/core 3.8.0 → 3.8.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 (146) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/dist/automation/extract-text.js +79 -0
  3. package/dist/automation/get-nml-client.js +42 -0
  4. package/dist/automation/get-viewport-size.js +13 -0
  5. package/dist/automation/locate-text.js +58 -0
  6. package/dist/automation/locate.js +60 -0
  7. package/dist/automation/set-viewport-size.js +13 -0
  8. package/dist/automation/types.js +2 -0
  9. package/dist/automation/utils/take-screenshot.js +59 -0
  10. package/dist/automation/utils/to-base-check-settings.js +70 -0
  11. package/dist/automation/utils/wait-for-lazy-load.js +22 -0
  12. package/dist/check-and-close.js +49 -0
  13. package/dist/check.js +78 -0
  14. package/dist/classic/abort.js +23 -0
  15. package/dist/classic/check-and-close.js +104 -0
  16. package/dist/classic/check.js +117 -0
  17. package/dist/classic/close.js +23 -0
  18. package/dist/classic/core.js +55 -0
  19. package/dist/classic/get-base-eyes.js +40 -0
  20. package/dist/classic/open-eyes.js +98 -0
  21. package/dist/classic/types.js +17 -0
  22. package/dist/classic/utils/take-dom-capture.js +121 -0
  23. package/dist/cli/cli.js +139 -0
  24. package/dist/close-batch.js +39 -0
  25. package/dist/close.js +38 -0
  26. package/dist/core.js +66 -0
  27. package/dist/delete-test.js +39 -0
  28. package/dist/errors/abort-error.js +10 -0
  29. package/dist/errors/internal-error.js +11 -0
  30. package/dist/errors/test-error.js +32 -0
  31. package/dist/extract-text.js +46 -0
  32. package/dist/get-account-info.js +37 -0
  33. package/dist/get-ec-client.js +37 -0
  34. package/dist/get-eyes-results.js +43 -0
  35. package/dist/get-manager-results.js +112 -0
  36. package/dist/get-typed-eyes.js +27 -0
  37. package/dist/index.js +38 -0
  38. package/dist/locate-text.js +41 -0
  39. package/dist/locate.js +41 -0
  40. package/dist/log-event.js +39 -0
  41. package/dist/make-manager.js +60 -0
  42. package/dist/open-eyes.js +91 -0
  43. package/dist/troubleshoot/check-network.js +114 -0
  44. package/dist/troubleshoot/eyes.js +85 -0
  45. package/dist/troubleshoot/logs.js +41 -0
  46. package/dist/troubleshoot/ufg.js +131 -0
  47. package/dist/troubleshoot/utils.js +44 -0
  48. package/dist/types.js +17 -0
  49. package/dist/ufg/abort.js +33 -0
  50. package/dist/ufg/check-and-close.js +270 -0
  51. package/dist/ufg/check.js +277 -0
  52. package/dist/ufg/close.js +38 -0
  53. package/dist/ufg/core.js +57 -0
  54. package/dist/ufg/get-base-eyes.js +56 -0
  55. package/dist/ufg/get-results.js +28 -0
  56. package/dist/ufg/get-ufg-client.js +47 -0
  57. package/dist/ufg/open-eyes.js +97 -0
  58. package/dist/ufg/types.js +17 -0
  59. package/dist/ufg/utils/generate-safe-selectors.js +63 -0
  60. package/dist/ufg/utils/take-dom-snapshot.js +134 -0
  61. package/dist/ufg/utils/take-dom-snapshots.js +153 -0
  62. package/dist/ufg/utils/uniquify-renderers.js +27 -0
  63. package/dist/universal/core-server-process.js +31 -0
  64. package/dist/universal/core-server.js +197 -0
  65. package/dist/universal/core.js +159 -0
  66. package/dist/universal/history.js +86 -0
  67. package/dist/universal/refer.js +67 -0
  68. package/dist/universal/spec-driver.js +163 -0
  69. package/dist/universal/types.js +2 -0
  70. package/dist/universal/ws-server.js +59 -0
  71. package/dist/utils/extract-environment.js +70 -0
  72. package/dist/utils/format-results.js +185 -0
  73. package/dist/utils/separate-duplicate-results.js +34 -0
  74. package/package.json +1 -1
  75. package/types/automation/extract-text.d.ts +15 -0
  76. package/types/automation/get-nml-client.d.ts +17 -0
  77. package/types/automation/get-viewport-size.d.ts +12 -0
  78. package/types/automation/locate-text.d.ts +14 -0
  79. package/types/automation/locate.d.ts +14 -0
  80. package/types/automation/set-viewport-size.d.ts +14 -0
  81. package/types/automation/types.d.ts +90 -0
  82. package/types/automation/utils/take-screenshot.d.ts +22 -0
  83. package/types/automation/utils/to-base-check-settings.d.ts +17 -0
  84. package/types/automation/utils/wait-for-lazy-load.d.ts +14 -0
  85. package/types/check-and-close.d.ts +18 -0
  86. package/types/check.d.ts +18 -0
  87. package/types/classic/abort.d.ts +16 -0
  88. package/types/classic/check-and-close.d.ts +19 -0
  89. package/types/classic/check.d.ts +15 -0
  90. package/types/classic/close.d.ts +16 -0
  91. package/types/classic/core.d.ts +17 -0
  92. package/types/classic/get-base-eyes.d.ts +18 -0
  93. package/types/classic/open-eyes.d.ts +16 -0
  94. package/types/classic/types.d.ts +35 -0
  95. package/types/classic/utils/take-dom-capture.d.ts +16 -0
  96. package/types/cli/cli.d.ts +2 -0
  97. package/types/close-batch.d.ts +12 -0
  98. package/types/close.d.ts +13 -0
  99. package/types/core.d.ts +15 -0
  100. package/types/delete-test.d.ts +12 -0
  101. package/types/errors/abort-error.d.ts +4 -0
  102. package/types/errors/internal-error.d.ts +6 -0
  103. package/types/errors/test-error.d.ts +5 -0
  104. package/types/extract-text.d.ts +16 -0
  105. package/types/get-account-info.d.ts +11 -0
  106. package/types/get-ec-client.d.ts +14 -0
  107. package/types/get-eyes-results.d.ts +12 -0
  108. package/types/get-manager-results.d.ts +13 -0
  109. package/types/get-typed-eyes.d.ts +19 -0
  110. package/types/index.d.ts +9 -0
  111. package/types/locate-text.d.ts +15 -0
  112. package/types/locate.d.ts +16 -0
  113. package/types/log-event.d.ts +12 -0
  114. package/types/make-manager.d.ts +20 -0
  115. package/types/open-eyes.d.ts +23 -0
  116. package/types/troubleshoot/check-network.d.ts +21 -0
  117. package/types/troubleshoot/eyes.d.ts +11 -0
  118. package/types/troubleshoot/logs.d.ts +10 -0
  119. package/types/troubleshoot/ufg.d.ts +10 -0
  120. package/types/troubleshoot/utils.d.ts +2 -0
  121. package/types/types.d.ts +142 -0
  122. package/types/ufg/abort.d.ts +21 -0
  123. package/types/ufg/check-and-close.d.ts +42 -0
  124. package/types/ufg/check.d.ts +23 -0
  125. package/types/ufg/close.d.ts +19 -0
  126. package/types/ufg/core.d.ts +21 -0
  127. package/types/ufg/get-base-eyes.d.ts +19 -0
  128. package/types/ufg/get-results.d.ts +16 -0
  129. package/types/ufg/get-ufg-client.d.ts +16 -0
  130. package/types/ufg/open-eyes.d.ts +16 -0
  131. package/types/ufg/types.d.ts +73 -0
  132. package/types/ufg/utils/generate-safe-selectors.d.ts +16 -0
  133. package/types/ufg/utils/take-dom-snapshot.d.ts +47 -0
  134. package/types/ufg/utils/take-dom-snapshots.d.ts +27 -0
  135. package/types/ufg/utils/uniquify-renderers.d.ts +2 -0
  136. package/types/universal/core-server-process.d.ts +9 -0
  137. package/types/universal/core-server.d.ts +14 -0
  138. package/types/universal/core.d.ts +25 -0
  139. package/types/universal/history.d.ts +2 -0
  140. package/types/universal/refer.d.ts +8 -0
  141. package/types/universal/spec-driver.d.ts +11 -0
  142. package/types/universal/types.d.ts +189 -0
  143. package/types/universal/ws-server.d.ts +14 -0
  144. package/types/utils/extract-environment.d.ts +2 -0
  145. package/types/utils/format-results.d.ts +16 -0
  146. package/types/utils/separate-duplicate-results.d.ts +2 -0
@@ -0,0 +1,19 @@
1
+ import type { DriverTarget, CloseSettings } from './types';
2
+ import { type Eyes as BaseEyes } from '@applitools/core-base';
3
+ import { type Logger } from '@applitools/logger';
4
+ import { type SpecType, type SpecDriver } from '@applitools/driver';
5
+ import { Renderer } from '@applitools/ufg-client';
6
+ type Options<TSpec extends SpecType> = {
7
+ storage: Map<string, Promise<{
8
+ renderer: Renderer;
9
+ eyes: BaseEyes;
10
+ }>[]>;
11
+ target?: DriverTarget<TSpec>;
12
+ spec?: SpecDriver<TSpec>;
13
+ logger: Logger;
14
+ };
15
+ export declare function makeClose<TSpec extends SpecType>({ storage, target, spec, logger: mainLogger }: Options<TSpec>): ({ settings, logger, }?: {
16
+ settings?: CloseSettings | undefined;
17
+ logger?: Logger | undefined;
18
+ }) => Promise<void>;
19
+ export {};
@@ -0,0 +1,21 @@
1
+ import type { Core } from './types';
2
+ import type { Core as BaseCore } from '@applitools/core-base';
3
+ import { type UFGClient } from '@applitools/ufg-client';
4
+ import { type NMLClient } from '@applitools/nml-client';
5
+ import { type SpecType, type SpecDriver } from '@applitools/driver';
6
+ import { type Logger } from '@applitools/logger';
7
+ type Options<TSpec extends SpecType> = {
8
+ spec?: SpecDriver<TSpec>;
9
+ clients?: {
10
+ ufg?: UFGClient;
11
+ nml?: NMLClient;
12
+ };
13
+ base?: BaseCore;
14
+ agentId?: string;
15
+ concurrency?: number;
16
+ fetchConcurrency?: number;
17
+ cwd?: string;
18
+ logger?: Logger;
19
+ };
20
+ export declare function makeCore<TSpec extends SpecType>({ concurrency, spec, clients, base, fetchConcurrency, agentId, cwd, logger: defaultLogger, }: Options<TSpec>): Core<TSpec>;
21
+ export {};
@@ -0,0 +1,19 @@
1
+ import type { Eyes, GetBaseEyesSettings, OpenSettings } from './types';
2
+ import type { Eyes as BaseEyes } from '@applitools/core-base';
3
+ import { type SpecType } from '@applitools/driver';
4
+ import { type Logger } from '@applitools/logger';
5
+ type Options<TSpec extends SpecType> = {
6
+ settings: OpenSettings;
7
+ eyes: Eyes<TSpec>;
8
+ base?: BaseEyes[];
9
+ logger: Logger;
10
+ };
11
+ export declare function makeGetBaseEyes<TSpec extends SpecType>({ settings: defaultSettings, eyes, base, logger: mainLogger, }: Options<TSpec>): (({ settings, logger, }?: {
12
+ settings?: GetBaseEyesSettings | undefined;
13
+ logger?: Logger | undefined;
14
+ }) => Promise<BaseEyes[]>) & {
15
+ getCachedValues(): Promise<BaseEyes[]>[];
16
+ setCachedValue(key: any, value: Promise<BaseEyes[]>): void;
17
+ clearCache(): void;
18
+ };
19
+ export {};
@@ -0,0 +1,16 @@
1
+ import type { GetResultsSettings, TestResult } from './types';
2
+ import { type Eyes as BaseEyes } from '@applitools/core-base';
3
+ import { type Logger } from '@applitools/logger';
4
+ import { Renderer } from '@applitools/ufg-client';
5
+ type Options = {
6
+ storage: Map<string, Promise<{
7
+ renderer: Renderer;
8
+ eyes: BaseEyes;
9
+ }>[]>;
10
+ logger: Logger;
11
+ };
12
+ export declare function makeGetResults({ storage, logger: mainLogger }: Options): ({ settings, logger, }?: {
13
+ settings?: GetResultsSettings | undefined;
14
+ logger?: Logger | undefined;
15
+ }) => Promise<TestResult[]>;
16
+ export {};
@@ -0,0 +1,16 @@
1
+ import { type Logger } from '@applitools/logger';
2
+ import { type UFGClient, type UFGClientSettings } from '@applitools/ufg-client';
3
+ type Options = {
4
+ client?: UFGClient;
5
+ fetchConcurrency?: number;
6
+ logger: Logger;
7
+ };
8
+ export declare function makeGetUFGClient({ client, fetchConcurrency, logger: mainLogger }: Options): (({ settings, logger }: {
9
+ settings: UFGClientSettings;
10
+ logger?: Logger | undefined;
11
+ }) => Promise<UFGClient>) & {
12
+ getCachedValues(): Promise<UFGClient>[];
13
+ setCachedValue(key: any, value: Promise<UFGClient>): void;
14
+ clearCache(): void;
15
+ };
16
+ export {};
@@ -0,0 +1,16 @@
1
+ import type { DriverTarget, Core, Eyes, OpenSettings } from './types';
2
+ import type { Eyes as BaseEyes } from '@applitools/core-base';
3
+ import { type Logger } from '@applitools/logger';
4
+ import { type SpecType, type SpecDriver } from '@applitools/driver';
5
+ type Options<TSpec extends SpecType> = {
6
+ core: Core<TSpec>;
7
+ spec?: SpecDriver<TSpec>;
8
+ logger: Logger;
9
+ };
10
+ export declare function makeOpenEyes<TSpec extends SpecType>({ core, spec, logger: mainLogger }: Options<TSpec>): ({ target, settings, base, logger, }: {
11
+ target?: DriverTarget<TSpec> | undefined;
12
+ settings: OpenSettings;
13
+ base?: BaseEyes[] | undefined;
14
+ logger?: Logger | undefined;
15
+ }) => Promise<Eyes<TSpec>>;
16
+ export {};
@@ -0,0 +1,73 @@
1
+ import type { MaybeArray } from '@applitools/utils';
2
+ import type * as BaseCore from '@applitools/core-base/types';
3
+ import type * as AutomationCore from '../automation/types';
4
+ import { type SpecType } from '@applitools/driver';
5
+ import { type Logger } from '@applitools/logger';
6
+ import { type Proxy } from '@applitools/req';
7
+ import { type UFGClient, type UFGClientSettings, type RenderEnvironmentSettings, type Renderer, type DomSnapshot, type AndroidSnapshot, type IOSSnapshot } from '@applitools/ufg-client';
8
+ export * from '../automation/types';
9
+ export type SnapshotTarget = MaybeArray<DomSnapshot> | MaybeArray<AndroidSnapshot> | MaybeArray<IOSSnapshot>;
10
+ export type Target<TSpec extends SpecType> = SnapshotTarget | AutomationCore.Target<TSpec>;
11
+ export interface Core<TSpec extends SpecType> extends AutomationCore.Core<TSpec> {
12
+ readonly type: 'ufg';
13
+ getUFGClient(options?: {
14
+ settings: UFGClientSettings;
15
+ logger?: Logger;
16
+ }): Promise<UFGClient>;
17
+ openEyes(options: {
18
+ target?: AutomationCore.DriverTarget<TSpec>;
19
+ settings: AutomationCore.OpenSettings;
20
+ base?: BaseCore.Eyes[];
21
+ logger?: Logger;
22
+ }): Promise<Eyes<TSpec>>;
23
+ }
24
+ export interface Eyes<TSpec extends SpecType> extends AutomationCore.Eyes<TSpec> {
25
+ readonly type: 'ufg';
26
+ readonly core: Core<TSpec>;
27
+ getBaseEyes(options?: {
28
+ settings?: GetBaseEyesSettings;
29
+ logger?: Logger;
30
+ }): Promise<BaseCore.Eyes[]>;
31
+ check(options?: {
32
+ target?: Target<TSpec>;
33
+ settings?: CheckSettings<TSpec>;
34
+ logger?: Logger;
35
+ }): Promise<CheckResult[]>;
36
+ checkAndClose(options?: {
37
+ target?: Target<TSpec>;
38
+ settings?: CheckSettings<TSpec> & AutomationCore.CloseSettings;
39
+ logger?: Logger;
40
+ }): Promise<void>;
41
+ getResults(options?: {
42
+ settings?: AutomationCore.GetResultsSettings;
43
+ logger?: Logger;
44
+ }): Promise<TestResult[]>;
45
+ }
46
+ export type GetBaseEyesSettings = RenderEnvironmentSettings & {
47
+ properties?: BaseCore.CustomProperty[];
48
+ };
49
+ export type CheckSettings<TSpec extends SpecType> = AutomationCore.CheckSettings<TSpec> & {
50
+ renderers?: (Renderer & {
51
+ properties?: BaseCore.CustomProperty[];
52
+ })[];
53
+ hooks?: {
54
+ beforeCaptureScreenshot: string;
55
+ };
56
+ disableBrowserFetching?: boolean;
57
+ layoutBreakpoints?: {
58
+ breakpoints: number[] | boolean;
59
+ reload?: boolean;
60
+ };
61
+ ufgOptions?: Record<string, any>;
62
+ autProxy?: Proxy & {
63
+ mode?: 'Allow' | 'Block';
64
+ domains?: string[];
65
+ };
66
+ headers?: Record<string, string>;
67
+ };
68
+ export type CheckResult = AutomationCore.CheckResult & {
69
+ readonly renderer: Renderer;
70
+ };
71
+ export type TestResult = AutomationCore.TestResult & {
72
+ readonly renderer: Renderer;
73
+ };
@@ -0,0 +1,16 @@
1
+ import { type SpecType, type Context, type ElementReference, type CommonSelector } from '@applitools/driver';
2
+ export declare function generateSafeSelectors<TSpec extends SpecType>({ context, elementReferences, }: {
3
+ context: Context<TSpec>;
4
+ elementReferences: ElementReference<TSpec>[];
5
+ }): Promise<{
6
+ selectors: ({
7
+ safeSelector: null;
8
+ originalSelector: null;
9
+ elementReference: ElementReference<TSpec>;
10
+ } | {
11
+ safeSelector: CommonSelector;
12
+ originalSelector: CommonSelector | null;
13
+ elementReference: ElementReference<TSpec>;
14
+ })[];
15
+ cleanupGeneratedSelectors: () => Promise<void>;
16
+ }>;
@@ -0,0 +1,47 @@
1
+ import { type Logger } from '@applitools/logger';
2
+ import { type SpecType, type Context } from '@applitools/driver';
3
+ import { type DomSnapshot } from '@applitools/ufg-client';
4
+ export type RawDomSnapshot = {
5
+ url: string;
6
+ selector: string;
7
+ cdt: {
8
+ attributes: {
9
+ name: string;
10
+ value: string;
11
+ }[];
12
+ }[];
13
+ crossFrames?: {
14
+ selector: string;
15
+ index: number;
16
+ }[];
17
+ frames: RawDomSnapshot[];
18
+ resourceUrls: string[];
19
+ blobs: {
20
+ url: string;
21
+ value?: string;
22
+ }[];
23
+ srcAttr: string | null;
24
+ scriptVersion: string;
25
+ };
26
+ export type DomSnapshotSettings = {
27
+ disableBrowserFetching?: boolean;
28
+ skipResources?: string[];
29
+ chunkByteLength?: number;
30
+ executionTimeout?: number;
31
+ pollTimeout?: number;
32
+ showLogs?: boolean;
33
+ };
34
+ export declare function takeDomSnapshot<TSpec extends SpecType>({ context, settings, logger, }: {
35
+ context: Context<TSpec>;
36
+ settings?: DomSnapshotSettings;
37
+ logger: Logger;
38
+ }): Promise<DomSnapshot>;
39
+ export declare function extractCrossFrames({ snapshot, parent, logger, }: {
40
+ snapshot: RawDomSnapshot;
41
+ parent?: any;
42
+ logger: Logger;
43
+ }): {
44
+ cdtNode: RawDomSnapshot['cdt'][number];
45
+ reference: any;
46
+ parentSnapshot: RawDomSnapshot;
47
+ }[];
@@ -0,0 +1,27 @@
1
+ import type { Size } from '@applitools/utils';
2
+ import { type Logger } from '@applitools/logger';
3
+ import { type SpecType, type Driver } from '@applitools/driver';
4
+ import { type DomSnapshot, type Renderer, type ChromeEmulationDevice, type IOSDevice, type ScreenOrientation } from '@applitools/ufg-client';
5
+ import { type DomSnapshotSettings } from './take-dom-snapshot';
6
+ export * from './take-dom-snapshot';
7
+ export type DomSnapshotsSettings = DomSnapshotSettings & {
8
+ renderers: Renderer[];
9
+ waitBeforeCapture?: number | (() => void);
10
+ layoutBreakpoints?: {
11
+ breakpoints: number[] | boolean;
12
+ reload?: boolean;
13
+ };
14
+ };
15
+ export declare function takeDomSnapshots<TSpec extends SpecType>({ driver, settings, hooks, provides, logger, }: {
16
+ driver: Driver<TSpec>;
17
+ settings: DomSnapshotsSettings;
18
+ hooks?: {
19
+ beforeSnapshots?(): void | Promise<void>;
20
+ beforeEachSnapshot?(): void | Promise<void>;
21
+ };
22
+ provides?: {
23
+ getChromeEmulationDevices(): Promise<Record<ChromeEmulationDevice, Record<ScreenOrientation, Size>>>;
24
+ getIOSDevices(): Promise<Record<IOSDevice, Record<ScreenOrientation, Size>>>;
25
+ };
26
+ logger: Logger;
27
+ }): Promise<DomSnapshot[]>;
@@ -0,0 +1,2 @@
1
+ import { type Renderer } from '@applitools/ufg-client';
2
+ export declare function uniquifyRenderers<TRenderer extends Renderer>(renderers: TRenderer[]): TRenderer[];
@@ -0,0 +1,9 @@
1
+ /// <reference types="node" />
2
+ import { type Options } from './core-server';
3
+ import { type ForkOptions } from 'child_process';
4
+ export declare function makeCoreServerProcess(options: Options & {
5
+ forkOptions?: ForkOptions;
6
+ }): Promise<{
7
+ port: number;
8
+ close: () => void;
9
+ }>;
@@ -0,0 +1,14 @@
1
+ import { type ServerOptions } from './ws-server';
2
+ export type Options = ServerOptions & {
3
+ environment?: Record<string, any>;
4
+ debug?: boolean;
5
+ shutdownMode?: 'lazy' | 'stdin';
6
+ idleTimeout?: number;
7
+ printStdout?: boolean;
8
+ isProcess?: boolean;
9
+ };
10
+ export declare function makeCoreServer({ environment: defaultEnvironment, debug, shutdownMode, idleTimeout, // 15min
11
+ printStdout, isProcess, ...handlerOptions }?: Options): Promise<{
12
+ port: number;
13
+ close?: () => void;
14
+ }>;
@@ -0,0 +1,25 @@
1
+ import type { Core, EyesManager, Eyes } from '../types';
2
+ import type { ClientSocket, Ref } from './types';
3
+ import type { SpecType, SpecDriver } from '@applitools/driver';
4
+ import { type Socket } from '@applitools/socket';
5
+ import { WebSocket } from 'ws';
6
+ export declare function makeCore<TSpec extends SpecType, TType extends 'classic' | 'ufg'>(options: {
7
+ spec: 'webdriver' | SpecDriver<TSpec>;
8
+ environment?: Record<string, any>;
9
+ agentId: string;
10
+ }): Core<TSpec, TType>;
11
+ export declare function makeManager<TSpec extends SpecType, TType extends 'classic' | 'ufg'>({ socket, core, managerRef, }: {
12
+ socket: ClientSocket<TSpec, TType>;
13
+ core: Core<TSpec, TType>;
14
+ managerRef: Ref<EyesManager<TSpec, TType>>;
15
+ }): EyesManager<TSpec, TType>;
16
+ export declare function makeEyes<TSpec extends SpecType, TType extends 'classic' | 'ufg'>({ socket, core, eyesRef, }: {
17
+ socket: ClientSocket<TSpec, TType>;
18
+ core: Core<TSpec, TType>;
19
+ eyesRef: Ref<Eyes<TSpec, TType>>;
20
+ }): Eyes<TSpec, TType>;
21
+ export declare function makeClientSocket<TSpec extends SpecType>({ agentId, environment, spec, }: {
22
+ agentId: string;
23
+ environment?: Record<string, any>;
24
+ spec: 'webdriver' | SpecDriver<TSpec>;
25
+ }): Promise<ClientSocket<TSpec, 'classic' | 'ufg'> & Socket<WebSocket>>;
@@ -0,0 +1,2 @@
1
+ import { type Socket } from '@applitools/socket';
2
+ export declare function withHistory<TSocket extends Socket>(socket: TSocket): () => Record<string, any>;
@@ -0,0 +1,8 @@
1
+ import type { Ref } from './types';
2
+ export interface Refer {
3
+ isRef<TValue = any>(ref: any): ref is Ref<TValue>;
4
+ ref<TValue>(value: TValue, parentRef?: Ref<unknown>): Ref<TValue>;
5
+ deref<TValue>(ref: Ref<TValue>): TValue;
6
+ destroy(ref: Ref<any>): void;
7
+ }
8
+ export declare function makeRefer(): Refer;
@@ -0,0 +1,11 @@
1
+ import type { Ref, ServerSocket, UniversalSpecDriver } from './types';
2
+ import type { SpecType as BaseSpecType, SpecDriver, CommonSelector } from '@applitools/driver';
3
+ export type Driver = Ref;
4
+ export type Context = Ref;
5
+ export type Element = Ref;
6
+ export type Selector = string | CommonSelector | Ref;
7
+ export type SpecType = BaseSpecType<Driver, Context, Element, Selector>;
8
+ export declare function makeSpec({ socket, spec, }: {
9
+ socket: ServerSocket<SpecType, any>;
10
+ spec: (keyof UniversalSpecDriver<SpecType>)[];
11
+ }): SpecDriver<SpecType>;
@@ -0,0 +1,189 @@
1
+ import type { Size, Region } from '@applitools/utils';
2
+ import type { Emitter, Listener, Client, Server } from '@applitools/socket';
3
+ import type { SpecType, DriverInfo, Cookie, WaitOptions } from '@applitools/driver';
4
+ import type * as MainCore from '../types';
5
+ /**
6
+ * Wraps the type with a ref if it vas to be refed
7
+ */
8
+ type Refify<TValue> = TValue extends string | number | boolean | null | undefined ? TValue : TValue extends Array<infer TItem> ? Refify<TItem>[] : Extract<TValue[keyof TValue], (...args: any) => any> extends never ? TValue : Ref<TValue>;
9
+ /**
10
+ * Creates universalized object out of an ordinary interface:
11
+ * - Filters out properties that are not of async function type
12
+ * - Adds domain to the method names (`Domain.methodName`)
13
+ * - Keep only first (`options`) argument of the methods
14
+ * - Introduces additional option to the methods with a ref of the current instance
15
+ * - Refifies return values of the methods
16
+ */
17
+ type Universalize<TTarget extends Record<string, any>, TDomain extends string, TRefKey extends string = never> = {
18
+ [TKey in keyof TTarget as NonNullable<TTarget[TKey]> extends (...args: any[]) => Promise<any> ? `${TDomain}.${TKey & string}` : never]: NonNullable<TTarget[TKey]> extends (options: infer TOptions) => Promise<infer TResult> ? (options: TOptions & {
19
+ [TKey in TRefKey]: Ref<TTarget>;
20
+ }) => Promise<Refify<TResult>> : never;
21
+ };
22
+ export type Ref<TValue = never> = {
23
+ 'applitools-ref-id': string;
24
+ type?: string;
25
+ };
26
+ export type ClientSocket<TSpec extends SpecType, TType extends 'classic' | 'ufg'> = unknown & Emitter<Universalize<UniversalCore<TSpec, TType>, 'Core'>> & Client<Universalize<MainCore.Core<TSpec, TType>, 'Core'>> & Client<Universalize<MainCore.EyesManager<TSpec, TType>, 'EyesManager', 'manager'>> & Client<Universalize<MainCore.Eyes<TSpec, TType>, 'Eyes', 'eyes'>> & Client<Universalize<UniversalDebug<TSpec>, 'Debug'>> & Server<Universalize<UniversalSpecDriver<TSpec>, 'Driver'>>;
27
+ export type ServerSocket<TSpec extends SpecType, TType extends 'classic' | 'ufg'> = unknown & Listener<Universalize<UniversalCore<TSpec, TType>, 'Core'>> & Emitter<Universalize<UniversalLogger, 'Logger'>> & Server<Universalize<MainCore.Core<TSpec, TType>, 'Core'>> & Server<Universalize<MainCore.EyesManager<TSpec, TType>, 'EyesManager', 'manager'>> & Server<Universalize<MainCore.Eyes<TSpec, TType>, 'Eyes', 'eyes'>> & Server<Universalize<UniversalDebug<TSpec>, 'Debug'>> & Client<Universalize<UniversalSpecDriver<TSpec>, 'Driver'>>;
28
+ export interface UniversalCore<TSpec extends SpecType, TType extends 'classic' | 'ufg'> {
29
+ makeCore(options: {
30
+ spec: 'webdriver' | (keyof UniversalSpecDriver<TSpec>)[];
31
+ agentId: string;
32
+ environment?: Record<string, any>;
33
+ cwd: string;
34
+ }): Promise<MainCore.Core<TSpec, TType>>;
35
+ }
36
+ export interface UniversalLogger {
37
+ log(options: {
38
+ level: string;
39
+ message: string;
40
+ }): Promise<void>;
41
+ }
42
+ export interface UniversalDebug<TSpec extends SpecType> {
43
+ getHistory(): Promise<any>;
44
+ checkSpecDriver(options: {
45
+ driver: TSpec['driver'];
46
+ commands: (keyof UniversalSpecDriver<TSpec>)[];
47
+ }): Promise<any>;
48
+ }
49
+ /**
50
+ * Ideally would be transform SpecDriver type to the type with single object argument
51
+ * but typescript doesn't have a possibility to convert named tuples to object types at the moment
52
+ */
53
+ export interface UniversalSpecDriver<T extends SpecType> {
54
+ isEqualElements(options: {
55
+ context: T['context'];
56
+ element1: T['element'];
57
+ element2: T['element'];
58
+ }): Promise<boolean>;
59
+ mainContext(options: {
60
+ context: T['context'];
61
+ }): Promise<T['context']>;
62
+ parentContext(options: {
63
+ context: T['context'];
64
+ }): Promise<T['context']>;
65
+ childContext(options: {
66
+ context: T['context'];
67
+ element: T['element'];
68
+ }): Promise<T['context']>;
69
+ executeScript(options: {
70
+ context: T['context'];
71
+ script: string;
72
+ arg?: any;
73
+ }): Promise<any>;
74
+ findElement(options: {
75
+ context: T['context'];
76
+ selector: T['selector'];
77
+ parent?: T['element'];
78
+ }): Promise<T['element'] | null>;
79
+ findElements(options: {
80
+ context: T['context'];
81
+ selector: T['selector'];
82
+ parent?: T['element'];
83
+ }): Promise<T['element'][]>;
84
+ waitForSelector(options: {
85
+ context: T['context'];
86
+ selector: T['selector'];
87
+ parent?: T['element'];
88
+ options?: WaitOptions;
89
+ }): Promise<T['element'] | null>;
90
+ setElementText(options: {
91
+ context: T['context'];
92
+ element: T['element'];
93
+ text: string;
94
+ }): Promise<void>;
95
+ getElementText(options: {
96
+ context: T['context'];
97
+ element: T['element'];
98
+ }): Promise<string>;
99
+ setWindowSize(options: {
100
+ driver: T['driver'];
101
+ size: Size;
102
+ }): Promise<void>;
103
+ getWindowSize(options: {
104
+ driver: T['driver'];
105
+ }): Promise<Size>;
106
+ setViewportSize(options: {
107
+ driver: T['driver'];
108
+ size: Size;
109
+ }): Promise<void>;
110
+ getViewportSize(options: {
111
+ driver: T['driver'];
112
+ }): Promise<Size>;
113
+ getCookies(options: {
114
+ driver: T['driver'] | T['context'];
115
+ context?: boolean;
116
+ }): Promise<Cookie[]>;
117
+ getDriverInfo(options: {
118
+ driver: T['driver'];
119
+ }): Promise<DriverInfo>;
120
+ getCapabilities(options: {
121
+ driver: T['driver'];
122
+ }): Promise<Record<string, any>>;
123
+ getTitle(options: {
124
+ driver: T['driver'];
125
+ }): Promise<string>;
126
+ getUrl(options: {
127
+ driver: T['driver'];
128
+ }): Promise<string>;
129
+ takeScreenshot(options: {
130
+ driver: T['driver'];
131
+ }): Promise<string>;
132
+ click(options: {
133
+ context: T['context'];
134
+ element: T['element'] | T['selector'];
135
+ }): Promise<void>;
136
+ visit(options: {
137
+ driver: T['driver'];
138
+ url: string;
139
+ }): Promise<void>;
140
+ getOrientation(options: {
141
+ driver: T['driver'];
142
+ }): Promise<'portrait' | 'landscape' | 'portrait-secondary' | 'landscape-secondary'>;
143
+ setOrientation(options: {
144
+ driver: T['driver'];
145
+ orientation: 'portrait' | 'landscape' | 'portrait-secondary' | 'landscape-secondary';
146
+ }): Promise<void>;
147
+ getSystemBars(options: {
148
+ driver: T['driver'];
149
+ }): Promise<{
150
+ statusBar: {
151
+ visible: boolean;
152
+ x: number;
153
+ y: number;
154
+ height: number;
155
+ width: number;
156
+ };
157
+ navigationBar: {
158
+ visible: boolean;
159
+ x: number;
160
+ y: number;
161
+ height: number;
162
+ width: number;
163
+ };
164
+ }>;
165
+ getElementRegion(options: {
166
+ driver: T['driver'];
167
+ element: T['element'];
168
+ }): Promise<Region>;
169
+ getElementAttribute(options: {
170
+ driver: T['driver'];
171
+ element: T['element'];
172
+ attr: string;
173
+ }): Promise<string>;
174
+ performAction(options: {
175
+ driver: T['driver'];
176
+ steps: any[];
177
+ }): Promise<void>;
178
+ getCurrentWorld(options: {
179
+ driver: T['driver'];
180
+ }): Promise<string>;
181
+ getWorlds(options: {
182
+ driver: T['driver'];
183
+ }): Promise<string[]>;
184
+ switchWorld(options: {
185
+ driver: T['driver'];
186
+ name: string;
187
+ }): Promise<void>;
188
+ }
189
+ export {};
@@ -0,0 +1,14 @@
1
+ /// <reference types="node" />
2
+ import { Server as WsServer } from 'ws';
3
+ export type ServerOptions = {
4
+ port?: number;
5
+ singleton?: boolean;
6
+ portResolutionMode?: 'next' | 'random' | 'lazy';
7
+ debug?: boolean;
8
+ key?: string | Buffer;
9
+ cert?: string | Buffer;
10
+ };
11
+ export declare function makeServer(options?: ServerOptions): Promise<{
12
+ server?: WsServer;
13
+ port: number;
14
+ }>;
@@ -0,0 +1,2 @@
1
+ export declare function extractEnvironment(baseEnvironment?: Record<string, any>): Record<string, any>;
2
+ export declare function extractCIProvider(): string | null;
@@ -0,0 +1,16 @@
1
+ import type { TestResult } from '@applitools/core-base';
2
+ export declare function toFormatterString(results: TestResult[], { includeSubTests, markNewAsPassed }?: {
3
+ includeSubTests?: boolean;
4
+ markNewAsPassed?: boolean;
5
+ }): string;
6
+ export declare function toHierarchicTAPString(results: TestResult[], { includeSubTests, markNewAsPassed }?: {
7
+ includeSubTests?: boolean;
8
+ markNewAsPassed?: boolean;
9
+ }): string;
10
+ export declare function toFlattenedTAPString(results: TestResult[], { markNewAsPassed }?: {
11
+ markNewAsPassed?: boolean;
12
+ }): string;
13
+ export declare function toXmlOutput(results: TestResult[], { totalTime }?: {
14
+ totalTime?: number;
15
+ }): string;
16
+ export declare function toJsonOutput(results: TestResult[], space?: number | string): string;
@@ -0,0 +1,2 @@
1
+ import { TestResultContainer } from '../types';
2
+ export declare function separateDuplicateResults(containers: TestResultContainer<'classic' | 'ufg'>[]): TestResultContainer<"classic" | "ufg">[][];