@samsara-dev/appwright 0.7.1 → 0.7.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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAG3D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG/C,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,GAAG,CAatD;AAED,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,WAAW,CAAC,eAAe,CAAC,GACpC,cAAc,CAQhB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAG3D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAI/C,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,GAAG,CAetD;AAED,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,WAAW,CAAC,eAAe,CAAC,GACpC,cAAc,CAQhB"}
@@ -6,6 +6,7 @@ const browserstack_1 = require("./browserstack");
6
6
  const local_1 = require("./local");
7
7
  const emulator_1 = require("./emulator");
8
8
  const lambdatest_1 = require("./lambdatest");
9
+ const awsDeviceFarm_1 = require("./awsDeviceFarm");
9
10
  function getProviderClass(provider) {
10
11
  switch (provider) {
11
12
  case "browserstack":
@@ -16,6 +17,8 @@ function getProviderClass(provider) {
16
17
  return emulator_1.EmulatorProvider;
17
18
  case "local-device":
18
19
  return local_1.LocalDeviceProvider;
20
+ case "aws-device-farm":
21
+ return awsDeviceFarm_1.AWSDeviceFarmProvider;
19
22
  default:
20
23
  throw new Error(`Unknown device provider: ${provider}`);
21
24
  }
@@ -1 +1 @@
1
- {"version":3,"file":"reporter.d.ts","sourceRoot":"","sources":["../src/reporter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAUhF,cAAM,eAAgB,YAAW,QAAQ;IACvC,OAAO,CAAC,gBAAgB,CAAsB;IAE9C,OAAO;IAQP,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU;IAU9C,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU;IA0FtC,KAAK;YAKG,kCAAkC;IA4ChD,OAAO,CAAC,4BAA4B;IAyBpC,OAAO,CAAC,qBAAqB;CAI9B;AA8ED,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"reporter.d.ts","sourceRoot":"","sources":["../src/reporter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAUhF,cAAM,eAAgB,YAAW,QAAQ;IACvC,OAAO,CAAC,gBAAgB,CAAsB;IAE9C,OAAO;IAQP,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU;IAU9C,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU;IA2FtC,KAAK;YAKG,kCAAkC;IA6ChD,OAAO,CAAC,4BAA4B;IAyBpC,OAAO,CAAC,qBAAqB;CAI9B;AA8ED,eAAe,eAAe,CAAC"}
package/dist/reporter.js CHANGED
@@ -51,7 +51,6 @@ class VideoDownloader {
51
51
  type: "workerInfo",
52
52
  description: `Ran on worker #${workerIndex}.`,
53
53
  });
54
- const expectedVideoPath = path_1.default.join((0, utils_1.basePath)(), `worker-${workerIndex}-video.mp4`);
55
54
  // The `onTestEnd` is method is called before the worker ends and
56
55
  // the worker's `endTime` is saved to disk. We add a 5 secs delay
57
56
  // to prevent a harmful race condition.
@@ -68,10 +67,11 @@ class VideoDownloader {
68
67
  if (!this.providerSupportsVideo(providerName)) {
69
68
  return; // Nothing to do here
70
69
  }
70
+ const workerVideoBaseName = `worker-${workerIndex}-${sessionId}-video`;
71
71
  if (endTime) {
72
72
  // This is the last test in the worker, so let's download the video
73
73
  const provider = (0, providers_1.getProviderClass)(providerName);
74
- const downloaded = await provider.downloadVideo(sessionId, (0, utils_1.basePath)(), `worker-${workerIndex}-video`);
74
+ const downloaded = await provider.downloadVideo(sessionId, (0, utils_1.basePath)(), workerVideoBaseName);
75
75
  if (!downloaded) {
76
76
  return;
77
77
  }
@@ -80,8 +80,9 @@ class VideoDownloader {
80
80
  else {
81
81
  // This is an intermediate test in the worker, so let's wait for the
82
82
  // video file to be found on disk. Once it is, we trim and attach it.
83
- await waitFor(() => fs_1.default.existsSync(expectedVideoPath));
84
- return this.trimAndAttachPersistentDeviceVideo(test, result, expectedVideoPath);
83
+ const expectedWorkerVideoPath = path_1.default.join((0, utils_1.basePath)(), `${workerVideoBaseName}.mp4`);
84
+ await waitFor(() => fs_1.default.existsSync(expectedWorkerVideoPath));
85
+ return this.trimAndAttachPersistentDeviceVideo(test, result, expectedWorkerVideoPath);
85
86
  }
86
87
  })
87
88
  .catch((e) => {
@@ -111,7 +112,8 @@ class VideoDownloader {
111
112
  }
112
113
  else {
113
114
  const trimSkipPoint = (testStart.getTime() - workerStart.getTime()) / 1000;
114
- const trimmedFileName = `worker-${workerIdx}-trimmed-${test.id}.mp4`;
115
+ const retryIndex = result.retry ?? 0;
116
+ const trimmedFileName = `worker-${workerIdx}-trimmed-${test.id}-retry-${retryIndex}.mp4`;
115
117
  try {
116
118
  pathToAttach = await trimVideo({
117
119
  originalVideoPath: workerVideoPath,
@@ -135,7 +137,7 @@ class VideoDownloader {
135
137
  });
136
138
  }
137
139
  downloadAndAttachDeviceVideo(test, result, providerClass, sessionId) {
138
- const videoFileName = `${test.id}`;
140
+ const videoFileName = `${sessionId}-${test.id}`;
139
141
  if (!providerClass.downloadVideo) {
140
142
  return;
141
143
  }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=reporter.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reporter.spec.d.ts","sourceRoot":"","sources":["../../src/tests/reporter.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,167 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const vitest_1 = require("vitest");
7
+ const promises_1 = __importDefault(require("fs/promises"));
8
+ const os_1 = __importDefault(require("os"));
9
+ const path_1 = __importDefault(require("path"));
10
+ vitest_1.vi.mock("@ffmpeg-installer/ffmpeg", () => {
11
+ return {
12
+ default: { path: "/fake/ffmpeg" },
13
+ __esModule: true,
14
+ };
15
+ });
16
+ vitest_1.vi.mock("fluent-ffmpeg", () => {
17
+ return {
18
+ default: () => {
19
+ const handlers = {};
20
+ const chain = {
21
+ setFfmpegPath: () => chain,
22
+ setStartTime: () => chain,
23
+ setDuration: () => chain,
24
+ output: () => chain,
25
+ on: (event, cb) => {
26
+ handlers[event] = cb;
27
+ return chain;
28
+ },
29
+ run: () => {
30
+ void Promise.resolve().then(() => handlers.end?.());
31
+ },
32
+ };
33
+ return chain;
34
+ },
35
+ __esModule: true,
36
+ };
37
+ });
38
+ let mockBasePath = "";
39
+ const downloadVideoMock = vitest_1.vi.fn();
40
+ const getProviderClassMock = vitest_1.vi.fn(() => ({
41
+ downloadVideo: downloadVideoMock,
42
+ }));
43
+ vitest_1.vi.mock("../providers", () => {
44
+ return {
45
+ getProviderClass: getProviderClassMock,
46
+ __esModule: true,
47
+ };
48
+ });
49
+ vitest_1.vi.mock("../utils", () => {
50
+ return {
51
+ basePath: () => mockBasePath,
52
+ __esModule: true,
53
+ };
54
+ });
55
+ vitest_1.vi.mock("../logger", () => {
56
+ return {
57
+ logger: {
58
+ log: vitest_1.vi.fn(),
59
+ warn: vitest_1.vi.fn(),
60
+ error: vitest_1.vi.fn(),
61
+ },
62
+ __esModule: true,
63
+ };
64
+ });
65
+ let VideoDownloader;
66
+ (0, vitest_1.beforeAll)(async () => {
67
+ const reporterModule = await import("../reporter.js");
68
+ VideoDownloader = reporterModule.default;
69
+ });
70
+ (0, vitest_1.afterEach)(async () => {
71
+ const basePathToDelete = mockBasePath;
72
+ downloadVideoMock.mockReset();
73
+ mockBasePath = "";
74
+ getProviderClassMock.mockClear();
75
+ vitest_1.vi.useRealTimers();
76
+ if (basePathToDelete) {
77
+ await promises_1.default.rm(basePathToDelete, { recursive: true, force: true });
78
+ }
79
+ });
80
+ (0, vitest_1.describe)("VideoDownloader", () => {
81
+ (0, vitest_1.test)("downloads device videos with session-scoped filename", async () => {
82
+ mockBasePath = await promises_1.default.mkdtemp(path_1.default.join(os_1.default.tmpdir(), "appwright-videos-"));
83
+ const sessionId = "session-123";
84
+ const testId = "test-abc";
85
+ downloadVideoMock.mockResolvedValueOnce({
86
+ path: path_1.default.join(mockBasePath, `${sessionId}-${testId}.mp4`),
87
+ contentType: "video/mp4",
88
+ });
89
+ const reporter = new VideoDownloader();
90
+ const testCase = {
91
+ id: testId,
92
+ title: "example",
93
+ annotations: [
94
+ { type: "sessionId", description: sessionId },
95
+ { type: "providerName", description: "browserstack" },
96
+ ],
97
+ };
98
+ const testResult = {
99
+ workerIndex: 0,
100
+ duration: 1,
101
+ startTime: new Date(),
102
+ attachments: [],
103
+ };
104
+ reporter.onTestEnd(testCase, testResult);
105
+ (0, vitest_1.expect)(getProviderClassMock).toHaveBeenCalledWith("browserstack");
106
+ (0, vitest_1.expect)(downloadVideoMock).toHaveBeenCalledWith(sessionId, mockBasePath, `${sessionId}-${testId}`);
107
+ await reporter.onEnd();
108
+ (0, vitest_1.expect)(testResult.attachments).toEqual([
109
+ {
110
+ path: path_1.default.join(mockBasePath, `${sessionId}-${testId}.mp4`),
111
+ contentType: "video/mp4",
112
+ name: "video",
113
+ },
114
+ ]);
115
+ });
116
+ (0, vitest_1.test)("scopes persistentDevice worker video base name by sessionId", async () => {
117
+ vitest_1.vi.useFakeTimers();
118
+ mockBasePath = await promises_1.default.mkdtemp(path_1.default.join(os_1.default.tmpdir(), "appwright-videos-"));
119
+ const workerIndex = 0;
120
+ const sessionId = "session-xyz";
121
+ const providerName = "browserstack";
122
+ const workerVideoBaseName = `worker-${workerIndex}-${sessionId}-video`;
123
+ const workerStart = new Date("2025-01-01T00:00:00.000Z");
124
+ const testStart = new Date("2025-01-01T00:00:10.000Z");
125
+ await promises_1.default.writeFile(path_1.default.join(mockBasePath, `worker-info-${workerIndex}.json`), JSON.stringify({
126
+ idx: workerIndex,
127
+ sessionId,
128
+ providerName,
129
+ startTime: {
130
+ beforeAppiumSession: workerStart.toISOString(),
131
+ afterAppiumSession: workerStart.toISOString(),
132
+ },
133
+ endTime: new Date("2025-01-01T00:00:02.000Z").toISOString(),
134
+ tests: [],
135
+ }, null, 2));
136
+ const downloadedVideoPath = path_1.default.join(mockBasePath, `${workerVideoBaseName}.mp4`);
137
+ await promises_1.default.writeFile(downloadedVideoPath, "video-bytes");
138
+ downloadVideoMock.mockResolvedValueOnce({
139
+ path: downloadedVideoPath,
140
+ contentType: "video/mp4",
141
+ });
142
+ const reporter = new VideoDownloader();
143
+ const testCase = {
144
+ id: "test-1",
145
+ title: "persistent",
146
+ annotations: [],
147
+ };
148
+ const testResult = {
149
+ workerIndex,
150
+ duration: 1,
151
+ startTime: testStart,
152
+ retry: 1,
153
+ attachments: [],
154
+ };
155
+ reporter.onTestEnd(testCase, testResult);
156
+ await vitest_1.vi.advanceTimersByTimeAsync(5000);
157
+ await reporter.onEnd();
158
+ (0, vitest_1.expect)(downloadVideoMock).toHaveBeenCalledWith(sessionId, mockBasePath, workerVideoBaseName);
159
+ (0, vitest_1.expect)(testResult.attachments).toMatchObject([
160
+ {
161
+ contentType: "video/mp4",
162
+ name: "video",
163
+ path: vitest_1.expect.stringContaining(`-retry-1.mp4`),
164
+ },
165
+ ]);
166
+ });
167
+ });
@@ -1,4 +1,5 @@
1
1
  import { Device } from "../device";
2
+ import type { CreateRemoteAccessSessionConfiguration } from "@aws-sdk/client-device-farm";
2
3
  import { z } from "zod";
3
4
  export type ExtractType<T> = T extends z.ZodType ? z.infer<T> : never;
4
5
  export type ActionOptions = {
@@ -66,7 +67,7 @@ export type VisualTraceConfig = {
66
67
  */
67
68
  dedupe?: boolean;
68
69
  };
69
- export type DeviceConfig = BrowserStackConfig | LambdaTestConfig | LocalDeviceConfig | EmulatorConfig;
70
+ export type DeviceConfig = BrowserStackConfig | LambdaTestConfig | LocalDeviceConfig | EmulatorConfig | AWSDeviceFarmConfig;
70
71
  /**
71
72
  * Configuration for devices running on Browserstack.
72
73
  */
@@ -181,6 +182,75 @@ export type LambdaTestConfig = {
181
182
  */
182
183
  tunnel?: boolean;
183
184
  };
185
+ export type AWSDeviceFarmInteractionMode = "INTERACTIVE" | "NO_VIDEO" | "VIDEO_ONLY";
186
+ export type AWSDeviceFarmConfig = {
187
+ provider: "aws-device-farm";
188
+ /**
189
+ * Optional device name (for compatibility with other providers).
190
+ */
191
+ name?: string;
192
+ /**
193
+ * Optional device orientation (for compatibility with other providers).
194
+ */
195
+ orientation?: DeviceOrientation;
196
+ /**
197
+ * ARN of the Device Farm project.
198
+ */
199
+ projectArn: string;
200
+ /**
201
+ * ARN of the device to target.
202
+ */
203
+ deviceArn: string;
204
+ /**
205
+ * Region to use when connecting to Device Farm. Defaults to us-west-2 if not provided.
206
+ */
207
+ region?: string;
208
+ /**
209
+ * Optional pre-uploaded application ARN. If omitted, Appwright will upload the build from `buildPath`.
210
+ */
211
+ appArn?: string;
212
+ /**
213
+ * Friendly name to apply to the remote session.
214
+ */
215
+ sessionName?: string;
216
+ /**
217
+ * Device Farm interaction mode to request. Defaults to VIDEO_ONLY.
218
+ */
219
+ interactionMode?: AWSDeviceFarmInteractionMode;
220
+ /**
221
+ * Forwarded to Device Farm's `configuration` field for advanced tuning.
222
+ */
223
+ configuration?: CreateRemoteAccessSessionConfiguration;
224
+ /**
225
+ * Skip resigning the uploaded application. Applies to private devices.
226
+ */
227
+ skipAppResign?: boolean;
228
+ /**
229
+ * Android package name of the application under test.
230
+ */
231
+ appPackage?: string;
232
+ /**
233
+ * Android launchable activity of the application under test.
234
+ */
235
+ appActivity?: string;
236
+ /**
237
+ * Any additional capabilities that should be merged into the Appium session.
238
+ */
239
+ additionalCapabilities?: Record<string, unknown>;
240
+ /**
241
+ * IAM role ARN to assume before making Device Farm API calls.
242
+ * When provided, Appwright will use STS AssumeRole to obtain temporary credentials.
243
+ */
244
+ roleArn?: string;
245
+ /**
246
+ * Session name for the assumed role. Defaults to "appwright-device-farm".
247
+ */
248
+ roleSessionName?: string;
249
+ /**
250
+ * External ID for the assumed role (if required by the role's trust policy).
251
+ */
252
+ externalId?: string;
253
+ };
184
254
  /**
185
255
  * Configuration for locally connected physical devices.
186
256
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;AAEtE,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,WAAW,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9B;;OAEG;IACH,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAE7B;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE;QAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACrB;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,YAAY,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IAEpB,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,OAAO,GAAG,IAAI,GAAG,KAAK,GAAG,mBAAmB,CAAC;IAEjE;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,YAAY,GACpB,kBAAkB,GAClB,gBAAgB,GAChB,iBAAiB,GACjB,cAAc,CAAC;AAEnB;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,EAAE,cAAc,CAAC;IAEzB;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;;;OAIG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAEhC;;;OAGG;IACH,0BAA0B,CAAC,EAAE,OAAO,CAAC;IAErC;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;;;;;;;;;;;OAcG;IACH,iBAAiB,CAAC,EAAE,cAAc,CAAC;IAEnC;;;OAGG;IACH,iBAAiB,CAAC,EAAE,6BAA6B,CAAC;CACnD,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG;IAC1C,OAAO,CAAC,EAAE;QACR;;WAEG;QACH,gBAAgB,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;KACvC,CAAC;IACF,GAAG,CAAC,EAAE;QACJ;;WAEG;QACH,QAAQ,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;KAC5C,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,EAAE,YAAY,CAAC;IAEvB;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;;;OAIG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAEhC;;;OAGG;IACH,0BAA0B,CAAC,EAAE,OAAO,CAAC;IAErC;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,EAAE,cAAc,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,WAAW,CAAC,EAAE,iBAAiB,CAAC;CACjC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,EAAE,UAAU,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,WAAW,CAAC,EAAE,iBAAiB,CAAC;CACjC,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,qBAAqB,GAAG,OAAO,CAAC;IAC1C,QAAQ,EAAE,OAAO,CAAC;QAChB,uBAAuB,EAAE,QAAQ,GAAG,qBAAqB,GAAG,OAAO,CAAC;QACpE,kBAAkB,EAAE,IAAI,GAAG,KAAK,CAAC;KAClC,CAAC,CAAC;IACH,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC;IACzB,QAAQ,EAAE,OAAO,GAAG,MAAM,CAAC;IAC3B,MAAM,EAAE,iBAAiB,GAAG,iBAAiB,GAAG,YAAY,GAAG,MAAM,CAAC;IACtE,aAAa,EAAE,OAAO,CAAC;QACrB,qBAAqB,EAAE,IAAI,GAAG,KAAK,CAAC;KACrC,CAAC,CAAC;IACH,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAExD;;;GAGG;AACH,MAAM,MAAM,cAAc,GACtB;IAAE,qBAAqB,EAAE,qBAAqB,CAAA;CAAE,GAChD,iBAAiB,GACjB,CAAC;IAAE,qBAAqB,EAAE,qBAAqB,CAAA;CAAE,GAAG,iBAAiB,CAAC,CAAC;AAE3E,oBAAY,QAAQ;IAClB,OAAO,YAAY;IACnB,GAAG,QAAQ;CACZ;AAED,oBAAY,iBAAiB;IAC3B,QAAQ,aAAa;IACrB,SAAS,cAAc;CACxB;AAED,oBAAY,eAAe;IACzB,EAAE,OAAO;IACT,IAAI,SAAS;IACb,IAAI,SAAS;IACb,KAAK,UAAU;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC/B;;;;;;;;;OASG;IACH,GAAG,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5C;;;;;;;;;;OAUG;IACH,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5D;;;;;;;;;;OAUG;IACH,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtE;;;;;;;;;;;OAWG;IACH,OAAO,CACL,KAAK,EAAE,UAAU,GAAG,SAAS,EAC7B,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB;;;;;;;;;;OAUG;IACH,SAAS,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAErD;;;;;;;;;OASG;IACH,OAAO,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAElD,MAAM,CAAC,SAAS,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACnD;AAED,oBAAY,eAAe;IACzB,0BAA0B,4BAA4B;CACvD;AAED,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;AAClE,MAAM,MAAM,kBAAkB,GAAG,qCAAqC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@samsara-dev/appwright",
3
- "version": "0.7.1",
3
+ "version": "0.7.3",
4
4
  "publishConfig": {
5
5
  "registry": "https://registry.npmjs.org/",
6
6
  "access": "public"
@@ -36,7 +36,9 @@
36
36
  "license": "Apache-2.0",
37
37
  "description": "E2E mobile app testing done right, with the Playwright test runner",
38
38
  "dependencies": {
39
+ "@aws-sdk/client-device-farm": "^3.635.0",
39
40
  "@aws-sdk/client-s3": "^3.932.0",
41
+ "@aws-sdk/client-sts": "^3.635.0",
40
42
  "@empiricalrun/llm": "^0.9.25",
41
43
  "@ffmpeg-installer/ffmpeg": "^1.1.0",
42
44
  "@playwright/test": "^1.56.1",