@react-native-harness/ui 1.4.1 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@react-native-harness/ui",
3
3
  "description": "Native UI testing module for React Native Harness.",
4
- "version": "1.4.1",
4
+ "version": "1.5.0",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
7
7
  "module": "./dist/index.js",
@@ -39,7 +39,7 @@
39
39
  },
40
40
  "dependencies": {
41
41
  "tslib": "^2.3.0",
42
- "@react-native-harness/runtime": "1.4.1"
42
+ "@react-native-harness/runtime": "1.5.0"
43
43
  },
44
44
  "devDependencies": {
45
45
  "react-native": "*"
@@ -1,17 +0,0 @@
1
- import { type TurboModule } from 'react-native';
2
- import { type ViewInfo } from './types.js';
3
- interface Spec extends TurboModule {
4
- simulatePress(x: number, y: number): Promise<void>;
5
- queryByTestId(testId: string): ViewInfo | null;
6
- queryAllByTestId(testId: string): ViewInfo[];
7
- queryByAccessibilityLabel(label: string): ViewInfo | null;
8
- queryAllByAccessibilityLabel(label: string): ViewInfo[];
9
- captureScreenshot(bounds: ViewInfo | null): Promise<string | null>;
10
- typeChar(character: string): Promise<void>;
11
- blur(options: {
12
- submitEditing?: boolean;
13
- }): Promise<void>;
14
- }
15
- declare const _default: Spec;
16
- export default _default;
17
- //# sourceMappingURL=HarnessUI.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"HarnessUI.d.ts","sourceRoot":"","sources":["../src/HarnessUI.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,UAAU,IAAK,SAAQ,WAAW;IAChC,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAAC;IAC/C,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,EAAE,CAAC;IAC7C,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAAC;IAC1D,4BAA4B,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,EAAE,CAAC;IACxD,iBAAiB,CAAC,MAAM,EAAE,QAAQ,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACnE,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,IAAI,CAAC,OAAO,EAAE;QAAE,aAAa,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3D;;AAED,wBAAmE"}
package/dist/HarnessUI.js DELETED
@@ -1,2 +0,0 @@
1
- import { TurboModuleRegistry } from 'react-native';
2
- export default TurboModuleRegistry.getEnforcing('HarnessUI');
@@ -1,14 +0,0 @@
1
- import { type HarnessUIModule, type ViewInfo } from './types.js';
2
- declare global {
3
- interface Window {
4
- __RN_HARNESS_CAPTURE_SCREENSHOT__: (bounds: ViewInfo | null) => Promise<string | null>;
5
- __RN_HARNESS_SIMULATE_PRESS__: (x: number, y: number) => Promise<void>;
6
- __RN_HARNESS_TYPE_CHAR__: (character: string) => Promise<void>;
7
- __RN_HARNESS_BLUR__: (options: {
8
- submitEditing?: boolean;
9
- }) => Promise<void>;
10
- }
11
- }
12
- declare const WebHarnessUI: HarnessUIModule;
13
- export default WebHarnessUI;
14
- //# sourceMappingURL=HarnessUI.web.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"HarnessUI.web.d.ts","sourceRoot":"","sources":["../src/HarnessUI.web.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEjE,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,iCAAiC,EAAE,CACjC,MAAM,EAAE,QAAQ,GAAG,IAAI,KACpB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;QAC5B,6BAA6B,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QACvE,wBAAwB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/D,mBAAmB,EAAE,CAAC,OAAO,EAAE;YAC7B,aAAa,CAAC,EAAE,OAAO,CAAC;SACzB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;KACrB;CACF;AAYD,QAAA,MAAM,YAAY,EAAE,eA4CnB,CAAC;AAEF,eAAe,YAAY,CAAC"}
@@ -1,46 +0,0 @@
1
- const getElementViewInfo = (element) => {
2
- const rect = element.getBoundingClientRect();
3
- return {
4
- x: rect.left,
5
- y: rect.top,
6
- width: rect.width,
7
- height: rect.height,
8
- };
9
- };
10
- const WebHarnessUI = {
11
- simulatePress: async (x, y) => {
12
- await window.__RN_HARNESS_SIMULATE_PRESS__(x, y);
13
- },
14
- queryByTestId: (testId) => {
15
- const element = document.querySelector(`[data-testid="${testId}"]`);
16
- return element ? getElementViewInfo(element) : null;
17
- },
18
- queryAllByTestId: (testId) => {
19
- const elements = document.querySelectorAll(`[data-testid="${testId}"]`);
20
- return Array.from(elements).map(getElementViewInfo);
21
- },
22
- queryByAccessibilityLabel: (label) => {
23
- const element = document.querySelector(`[aria-label="${label}"]`);
24
- return element ? getElementViewInfo(element) : null;
25
- },
26
- queryAllByAccessibilityLabel: (label) => {
27
- const elements = document.querySelectorAll(`[aria-label="${label}"]`);
28
- return Array.from(elements).map(getElementViewInfo);
29
- },
30
- captureScreenshot: async (bounds) => {
31
- return await window.__RN_HARNESS_CAPTURE_SCREENSHOT__(bounds);
32
- },
33
- typeChar: async (character) => {
34
- await window.__RN_HARNESS_TYPE_CHAR__(character);
35
- },
36
- blur: async (options) => {
37
- // If there is a focused element, blur it directly in the DOM first
38
- // to trigger local events, then call the runner-side bridge.
39
- if (document.activeElement instanceof HTMLElement ||
40
- document.activeElement instanceof SVGElement) {
41
- document.activeElement.blur();
42
- }
43
- await window.__RN_HARNESS_BLUR__(options);
44
- },
45
- };
46
- export default WebHarnessUI;
@@ -1,22 +0,0 @@
1
- import { type TurboModule } from 'react-native';
2
- export interface ViewInfo {
3
- x: number;
4
- y: number;
5
- width: number;
6
- height: number;
7
- }
8
- interface Spec extends TurboModule {
9
- simulatePress(x: number, y: number): Promise<void>;
10
- queryByTestId(testId: string): ViewInfo | null;
11
- queryAllByTestId(testId: string): ViewInfo[];
12
- queryByAccessibilityLabel(label: string): ViewInfo | null;
13
- queryAllByAccessibilityLabel(label: string): ViewInfo[];
14
- captureScreenshot(bounds: ViewInfo | null): Promise<string | null>;
15
- typeChar(character: string): Promise<void>;
16
- blur(options: {
17
- submitEditing?: boolean;
18
- }): Promise<void>;
19
- }
20
- declare const _default: Spec;
21
- export default _default;
22
- //# sourceMappingURL=NativeHarness.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"NativeHarness.d.ts","sourceRoot":"","sources":["../src/NativeHarness.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAGrE,MAAM,WAAW,QAAQ;IACvB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,IAAK,SAAQ,WAAW;IAChC,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAAC;IAC/C,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,EAAE,CAAC;IAC7C,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAAC;IAC1D,4BAA4B,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,EAAE,CAAC;IACxD,iBAAiB,CAAC,MAAM,EAAE,QAAQ,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACnE,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,IAAI,CAAC,OAAO,EAAE;QAAE,aAAa,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3D;;AAED,wBAAmE"}
@@ -1,2 +0,0 @@
1
- import { TurboModuleRegistry } from 'react-native';
2
- export default TurboModuleRegistry.getEnforcing('HarnessUI');
@@ -1,14 +0,0 @@
1
- import { type HarnessUIModule, type ViewInfo } from './types.js';
2
- declare global {
3
- interface Window {
4
- __RN_HARNESS_CAPTURE_SCREENSHOT__: (bounds: ViewInfo | null) => Promise<string | null>;
5
- __RN_HARNESS_SIMULATE_PRESS__: (x: number, y: number) => Promise<void>;
6
- __RN_HARNESS_TYPE_CHAR__: (character: string) => Promise<void>;
7
- __RN_HARNESS_BLUR__: (options: {
8
- submitEditing?: boolean;
9
- }) => Promise<void>;
10
- }
11
- }
12
- declare const WebHarnessUI: HarnessUIModule;
13
- export default WebHarnessUI;
14
- //# sourceMappingURL=WebHarness.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"WebHarness.d.ts","sourceRoot":"","sources":["../src/WebHarness.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEjE,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,iCAAiC,EAAE,CACjC,MAAM,EAAE,QAAQ,GAAG,IAAI,KACpB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;QAC5B,6BAA6B,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QACvE,wBAAwB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/D,mBAAmB,EAAE,CAAC,OAAO,EAAE;YAC7B,aAAa,CAAC,EAAE,OAAO,CAAC;SACzB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;KACrB;CACF;AAYD,QAAA,MAAM,YAAY,EAAE,eAkDnB,CAAC;AAEF,eAAe,YAAY,CAAC"}
@@ -1,53 +0,0 @@
1
- const getElementViewInfo = (element) => {
2
- const rect = element.getBoundingClientRect();
3
- return {
4
- x: rect.left,
5
- y: rect.top,
6
- width: rect.width,
7
- height: rect.height,
8
- };
9
- };
10
- const WebHarnessUI = {
11
- simulatePress: async (x, y) => {
12
- await window.__RN_HARNESS_SIMULATE_PRESS__(x, y);
13
- },
14
- queryByTestId: (testId) => {
15
- const element = document.querySelector(`[data-testid="${testId}"]`);
16
- return element ? getElementViewInfo(element) : null;
17
- },
18
- queryAllByTestId: (testId) => {
19
- const elements = document.querySelectorAll(`[data-testid="${testId}"]`);
20
- return Array.from(elements).map(getElementViewInfo);
21
- },
22
- queryByAccessibilityLabel: (label) => {
23
- const element = document.querySelector(`[aria-label="${label}"]`);
24
- return element ? getElementViewInfo(element) : null;
25
- },
26
- queryAllByAccessibilityLabel: (label) => {
27
- const elements = document.querySelectorAll(`[aria-label="${label}"]`);
28
- return Array.from(elements).map(getElementViewInfo);
29
- },
30
- captureScreenshot: async (bounds) => {
31
- return await window.__RN_HARNESS_CAPTURE_SCREENSHOT__(bounds);
32
- },
33
- typeChar: async (character) => {
34
- await window.__RN_HARNESS_TYPE_CHAR__(character);
35
- },
36
- blur: async (options) => {
37
- if (options.submitEditing) {
38
- // If we want to submit, we must NOT blur before pressing Enter.
39
- // We let the runner-side bridge handle both Enter and the subsequent blur.
40
- await window.__RN_HARNESS_BLUR__(options);
41
- }
42
- else {
43
- // If there is a focused element, blur it directly in the DOM first
44
- // to trigger local events, then call the runner-side bridge.
45
- if (document.activeElement instanceof HTMLElement ||
46
- document.activeElement instanceof SVGElement) {
47
- document.activeElement.blur();
48
- }
49
- await window.__RN_HARNESS_BLUR__(options);
50
- }
51
- },
52
- };
53
- export default WebHarnessUI;
@@ -1,17 +0,0 @@
1
- import { type TurboModule } from 'react-native';
2
- import { type ViewInfo } from '../types.js';
3
- interface Spec extends TurboModule {
4
- simulatePress(x: number, y: number): Promise<void>;
5
- queryByTestId(testId: string): ViewInfo | null;
6
- queryAllByTestId(testId: string): ViewInfo[];
7
- queryByAccessibilityLabel(label: string): ViewInfo | null;
8
- queryAllByAccessibilityLabel(label: string): ViewInfo[];
9
- captureScreenshot(bounds: ViewInfo | null): Promise<string | null>;
10
- typeChar(character: string): Promise<void>;
11
- blur(options: {
12
- submitEditing?: boolean;
13
- }): Promise<void>;
14
- }
15
- declare const _default: Spec;
16
- export default _default;
17
- //# sourceMappingURL=NativeHarness.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"NativeHarness.d.ts","sourceRoot":"","sources":["../../src/harness/NativeHarness.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,UAAU,IAAK,SAAQ,WAAW;IAChC,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAAC;IAC/C,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,EAAE,CAAC;IAC7C,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAAC;IAC1D,4BAA4B,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,EAAE,CAAC;IACxD,iBAAiB,CAAC,MAAM,EAAE,QAAQ,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACnE,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,IAAI,CAAC,OAAO,EAAE;QAAE,aAAa,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3D;;AAED,wBAAmE"}
@@ -1,2 +0,0 @@
1
- import { TurboModuleRegistry } from 'react-native';
2
- export default TurboModuleRegistry.getEnforcing('HarnessUI');
@@ -1,14 +0,0 @@
1
- import { type HarnessUIModule, type ViewInfo } from '../types.js';
2
- declare global {
3
- interface Window {
4
- __RN_HARNESS_CAPTURE_SCREENSHOT__: (bounds: ViewInfo | null) => Promise<string | null>;
5
- __RN_HARNESS_SIMULATE_PRESS__: (x: number, y: number) => Promise<void>;
6
- __RN_HARNESS_TYPE_CHAR__: (character: string) => Promise<void>;
7
- __RN_HARNESS_BLUR__: (options: {
8
- submitEditing?: boolean;
9
- }) => Promise<void>;
10
- }
11
- }
12
- declare const WebHarnessUI: HarnessUIModule;
13
- export default WebHarnessUI;
14
- //# sourceMappingURL=WebHarness.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"WebHarness.d.ts","sourceRoot":"","sources":["../../src/harness/WebHarness.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAC;AAElE,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,iCAAiC,EAAE,CACjC,MAAM,EAAE,QAAQ,GAAG,IAAI,KACpB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;QAC5B,6BAA6B,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QACvE,wBAAwB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/D,mBAAmB,EAAE,CAAC,OAAO,EAAE;YAC7B,aAAa,CAAC,EAAE,OAAO,CAAC;SACzB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;KACrB;CACF;AAYD,QAAA,MAAM,YAAY,EAAE,eAkDnB,CAAC;AAEF,eAAe,YAAY,CAAC"}
@@ -1,53 +0,0 @@
1
- const getElementViewInfo = (element) => {
2
- const rect = element.getBoundingClientRect();
3
- return {
4
- x: rect.left,
5
- y: rect.top,
6
- width: rect.width,
7
- height: rect.height,
8
- };
9
- };
10
- const WebHarnessUI = {
11
- simulatePress: async (x, y) => {
12
- await window.__RN_HARNESS_SIMULATE_PRESS__(x, y);
13
- },
14
- queryByTestId: (testId) => {
15
- const element = document.querySelector(`[data-testid="${testId}"]`);
16
- return element ? getElementViewInfo(element) : null;
17
- },
18
- queryAllByTestId: (testId) => {
19
- const elements = document.querySelectorAll(`[data-testid="${testId}"]`);
20
- return Array.from(elements).map(getElementViewInfo);
21
- },
22
- queryByAccessibilityLabel: (label) => {
23
- const element = document.querySelector(`[aria-label="${label}"]`);
24
- return element ? getElementViewInfo(element) : null;
25
- },
26
- queryAllByAccessibilityLabel: (label) => {
27
- const elements = document.querySelectorAll(`[aria-label="${label}"]`);
28
- return Array.from(elements).map(getElementViewInfo);
29
- },
30
- captureScreenshot: async (bounds) => {
31
- return await window.__RN_HARNESS_CAPTURE_SCREENSHOT__(bounds);
32
- },
33
- typeChar: async (character) => {
34
- await window.__RN_HARNESS_TYPE_CHAR__(character);
35
- },
36
- blur: async (options) => {
37
- if (options.submitEditing) {
38
- // If we want to submit, we must NOT blur before pressing Enter.
39
- // We let the runner-side bridge handle both Enter and the subsequent blur.
40
- await window.__RN_HARNESS_BLUR__(options);
41
- }
42
- else {
43
- // If there is a focused element, blur it directly in the DOM first
44
- // to trigger local events, then call the runner-side bridge.
45
- if (document.activeElement instanceof HTMLElement ||
46
- document.activeElement instanceof SVGElement) {
47
- document.activeElement.blur();
48
- }
49
- await window.__RN_HARNESS_BLUR__(options);
50
- }
51
- },
52
- };
53
- export default WebHarnessUI;
@@ -1,4 +0,0 @@
1
- import { HarnessUIModule } from "../types.js";
2
- declare const _default: HarnessUIModule;
3
- export default _default;
4
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/harness/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;;AAU9C,wBAA8B"}
@@ -1,8 +0,0 @@
1
- import { Platform } from "react-native";
2
- const getHarnessUI = () => {
3
- if (Platform.OS === 'web') {
4
- return require('./WebHarness.js').default;
5
- }
6
- return require('./NativeHarness.js').default;
7
- };
8
- export default getHarnessUI();
@@ -1,17 +0,0 @@
1
- import { type TurboModule } from 'react-native';
2
- import { type ViewInfo } from '../types.js';
3
- interface Spec extends TurboModule {
4
- simulatePress(x: number, y: number): Promise<void>;
5
- queryByTestId(testId: string): ViewInfo | null;
6
- queryAllByTestId(testId: string): ViewInfo[];
7
- queryByAccessibilityLabel(label: string): ViewInfo | null;
8
- queryAllByAccessibilityLabel(label: string): ViewInfo[];
9
- captureScreenshot(bounds: ViewInfo | null): Promise<string | null>;
10
- typeChar(character: string): Promise<void>;
11
- blur(options: {
12
- submitEditing?: boolean;
13
- }): Promise<void>;
14
- }
15
- declare const _default: Spec;
16
- export default _default;
17
- //# sourceMappingURL=native-harness.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"native-harness.d.ts","sourceRoot":"","sources":["../../src/harness/native-harness.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,UAAU,IAAK,SAAQ,WAAW;IAChC,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAAC;IAC/C,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,EAAE,CAAC;IAC7C,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAAC;IAC1D,4BAA4B,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,EAAE,CAAC;IACxD,iBAAiB,CAAC,MAAM,EAAE,QAAQ,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACnE,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,IAAI,CAAC,OAAO,EAAE;QAAE,aAAa,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3D;;AAED,wBAAmE"}
@@ -1,2 +0,0 @@
1
- import { TurboModuleRegistry } from 'react-native';
2
- export default TurboModuleRegistry.getEnforcing('HarnessUI');
@@ -1,14 +0,0 @@
1
- import { type HarnessUIModule, type ViewInfo } from '../types.js';
2
- declare global {
3
- interface Window {
4
- __RN_HARNESS_CAPTURE_SCREENSHOT__: (bounds: ViewInfo | null) => Promise<string | null>;
5
- __RN_HARNESS_SIMULATE_PRESS__: (x: number, y: number) => Promise<void>;
6
- __RN_HARNESS_TYPE_CHAR__: (character: string) => Promise<void>;
7
- __RN_HARNESS_BLUR__: (options: {
8
- submitEditing?: boolean;
9
- }) => Promise<void>;
10
- }
11
- }
12
- declare const WebHarnessUI: HarnessUIModule;
13
- export default WebHarnessUI;
14
- //# sourceMappingURL=web-harness.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"web-harness.d.ts","sourceRoot":"","sources":["../../src/harness/web-harness.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAC;AAElE,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,iCAAiC,EAAE,CACjC,MAAM,EAAE,QAAQ,GAAG,IAAI,KACpB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;QAC5B,6BAA6B,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QACvE,wBAAwB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/D,mBAAmB,EAAE,CAAC,OAAO,EAAE;YAC7B,aAAa,CAAC,EAAE,OAAO,CAAC;SACzB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;KACrB;CACF;AAYD,QAAA,MAAM,YAAY,EAAE,eAkDnB,CAAC;AAEF,eAAe,YAAY,CAAC"}
@@ -1,53 +0,0 @@
1
- const getElementViewInfo = (element) => {
2
- const rect = element.getBoundingClientRect();
3
- return {
4
- x: rect.left,
5
- y: rect.top,
6
- width: rect.width,
7
- height: rect.height,
8
- };
9
- };
10
- const WebHarnessUI = {
11
- simulatePress: async (x, y) => {
12
- await window.__RN_HARNESS_SIMULATE_PRESS__(x, y);
13
- },
14
- queryByTestId: (testId) => {
15
- const element = document.querySelector(`[data-testid="${testId}"]`);
16
- return element ? getElementViewInfo(element) : null;
17
- },
18
- queryAllByTestId: (testId) => {
19
- const elements = document.querySelectorAll(`[data-testid="${testId}"]`);
20
- return Array.from(elements).map(getElementViewInfo);
21
- },
22
- queryByAccessibilityLabel: (label) => {
23
- const element = document.querySelector(`[aria-label="${label}"]`);
24
- return element ? getElementViewInfo(element) : null;
25
- },
26
- queryAllByAccessibilityLabel: (label) => {
27
- const elements = document.querySelectorAll(`[aria-label="${label}"]`);
28
- return Array.from(elements).map(getElementViewInfo);
29
- },
30
- captureScreenshot: async (bounds) => {
31
- return await window.__RN_HARNESS_CAPTURE_SCREENSHOT__(bounds);
32
- },
33
- typeChar: async (character) => {
34
- await window.__RN_HARNESS_TYPE_CHAR__(character);
35
- },
36
- blur: async (options) => {
37
- if (options.submitEditing) {
38
- // If we want to submit, we must NOT blur before pressing Enter.
39
- // We let the runner-side bridge handle both Enter and the subsequent blur.
40
- await window.__RN_HARNESS_BLUR__(options);
41
- }
42
- else {
43
- // If there is a focused element, blur it directly in the DOM first
44
- // to trigger local events, then call the runner-side bridge.
45
- if (document.activeElement instanceof HTMLElement ||
46
- document.activeElement instanceof SVGElement) {
47
- document.activeElement.blur();
48
- }
49
- await window.__RN_HARNESS_BLUR__(options);
50
- }
51
- },
52
- };
53
- export default WebHarnessUI;