apify-test-tools 0.5.1 → 0.5.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/bin/git.ts +19 -34
  3. package/lib/lib.ts +5 -2
  4. package/package.json +1 -1
  5. package/test/unit/bin/git.test.ts +109 -0
  6. package/dist/bin/build.d.ts +0 -18
  7. package/dist/bin/build.d.ts.map +0 -1
  8. package/dist/bin/build.js +0 -229
  9. package/dist/bin/build.js.map +0 -1
  10. package/dist/bin/consts.d.ts +0 -4
  11. package/dist/bin/consts.d.ts.map +0 -1
  12. package/dist/bin/consts.js +0 -6
  13. package/dist/bin/consts.js.map +0 -1
  14. package/dist/bin/git.d.ts +0 -9
  15. package/dist/bin/git.d.ts.map +0 -1
  16. package/dist/bin/git.js +0 -61
  17. package/dist/bin/git.js.map +0 -1
  18. package/dist/bin/github.d.ts +0 -13
  19. package/dist/bin/github.d.ts.map +0 -1
  20. package/dist/bin/github.js +0 -59
  21. package/dist/bin/github.js.map +0 -1
  22. package/dist/bin/main.d.ts +0 -3
  23. package/dist/bin/main.d.ts.map +0 -1
  24. package/dist/bin/main.js +0 -124
  25. package/dist/bin/main.js.map +0 -1
  26. package/dist/bin/slack.d.ts +0 -13
  27. package/dist/bin/slack.d.ts.map +0 -1
  28. package/dist/bin/slack.js +0 -51
  29. package/dist/bin/slack.js.map +0 -1
  30. package/dist/bin/test-report.d.ts +0 -10
  31. package/dist/bin/test-report.d.ts.map +0 -1
  32. package/dist/bin/test-report.js +0 -74
  33. package/dist/bin/test-report.js.map +0 -1
  34. package/dist/bin/types.d.ts +0 -89
  35. package/dist/bin/types.d.ts.map +0 -1
  36. package/dist/bin/types.js +0 -2
  37. package/dist/bin/types.js.map +0 -1
  38. package/dist/bin/utils.d.ts +0 -29
  39. package/dist/bin/utils.d.ts.map +0 -1
  40. package/dist/bin/utils.js +0 -169
  41. package/dist/bin/utils.js.map +0 -1
  42. package/dist/index.d.ts +0 -3
  43. package/dist/index.d.ts.map +0 -1
  44. package/dist/index.js +0 -3
  45. package/dist/index.js.map +0 -1
  46. package/dist/lib/consts.d.ts +0 -3
  47. package/dist/lib/consts.d.ts.map +0 -1
  48. package/dist/lib/consts.js +0 -12
  49. package/dist/lib/consts.js.map +0 -1
  50. package/dist/lib/extend-expect.d.ts +0 -3
  51. package/dist/lib/extend-expect.d.ts.map +0 -1
  52. package/dist/lib/extend-expect.js +0 -257
  53. package/dist/lib/extend-expect.js.map +0 -1
  54. package/dist/lib/lib.d.ts +0 -38
  55. package/dist/lib/lib.d.ts.map +0 -1
  56. package/dist/lib/lib.js +0 -215
  57. package/dist/lib/lib.js.map +0 -1
  58. package/dist/lib/run-test-result.d.ts +0 -22
  59. package/dist/lib/run-test-result.d.ts.map +0 -1
  60. package/dist/lib/run-test-result.js +0 -73
  61. package/dist/lib/run-test-result.js.map +0 -1
  62. package/dist/lib/types.d.ts +0 -127
  63. package/dist/lib/types.d.ts.map +0 -1
  64. package/dist/lib/types.js +0 -2
  65. package/dist/lib/types.js.map +0 -1
  66. package/dist/lib/utils.d.ts +0 -8
  67. package/dist/lib/utils.d.ts.map +0 -1
  68. package/dist/lib/utils.js +0 -33
  69. package/dist/lib/utils.js.map +0 -1
  70. package/dist/test/unit/custom-matchers.test.d.ts +0 -2
  71. package/dist/test/unit/custom-matchers.test.d.ts.map +0 -1
  72. package/dist/test/unit/custom-matchers.test.js +0 -75
  73. package/dist/test/unit/custom-matchers.test.js.map +0 -1
  74. package/dist/test/unit/parse-commit.test.d.ts +0 -2
  75. package/dist/test/unit/parse-commit.test.d.ts.map +0 -1
  76. package/dist/test/unit/parse-commit.test.js +0 -57
  77. package/dist/test/unit/parse-commit.test.js.map +0 -1
  78. package/dist/test/unit/should-built-and-test.test.d.ts +0 -2
  79. package/dist/test/unit/should-built-and-test.test.d.ts.map +0 -1
  80. package/dist/test/unit/should-built-and-test.test.js +0 -136
  81. package/dist/test/unit/should-built-and-test.test.js.map +0 -1
  82. package/dist/test/unit/test-actor.test.d.ts +0 -2
  83. package/dist/test/unit/test-actor.test.d.ts.map +0 -1
  84. package/dist/test/unit/test-actor.test.js +0 -17
  85. package/dist/test/unit/test-actor.test.js.map +0 -1
  86. package/dist/tsconfig.tsbuildinfo +0 -1
package/dist/lib/lib.js DELETED
@@ -1,215 +0,0 @@
1
- import { ApifyClient } from 'apify-client';
2
- import { describe as vitestDescribe, test as vitestTest, } from 'vitest';
3
- import { RunTestResult } from './run-test-result.js';
4
- import { extendExpect } from './extend-expect.js';
5
- import { getActorPrefilledInput, sleep } from './utils.js';
6
- const ACTOR_BUILDS = 'ACTOR_BUILDS';
7
- let actorBuilds = [];
8
- try {
9
- const actorBuildsEnv = process.env[ACTOR_BUILDS];
10
- if (actorBuildsEnv) {
11
- actorBuilds = JSON.parse(actorBuildsEnv);
12
- if (!Array.isArray(actorBuilds)) {
13
- throw new Error(`${ACTOR_BUILDS} env variable should contain a JSON array, got ${typeof actorBuilds}`);
14
- }
15
- }
16
- }
17
- catch (err) {
18
- throw new Error(`Failed to parse actor builds: ${err}`);
19
- }
20
- const config = actorBuilds.reduce((map, cfg) => {
21
- map.set(cfg.actorName, cfg);
22
- map.set(cfg.actorId, cfg);
23
- return map;
24
- }, new Map());
25
- const { TESTER_APIFY_TOKEN, RUN_PLATFORM_TESTS, RUN_ALL_PLATFORM_TESTS } = process.env;
26
- const apifyClient = new ApifyClient({ token: TESTER_APIFY_TOKEN });
27
- const DEFAULT_TEST_OPTIONS = {
28
- // we want to run tests concurrently
29
- concurrent: true,
30
- // test should finish within 1 hour
31
- timeout: 60_000 * 60,
32
- };
33
- export const describe = (name, fn, options = DEFAULT_TEST_OPTIONS) => {
34
- vitestDescribe.runIf(!!RUN_PLATFORM_TESTS || !!RUN_ALL_PLATFORM_TESTS)(name, options, fn);
35
- };
36
- const DEFAULT_TEST_ACTOR_OPTIONS = {
37
- retry: 1,
38
- };
39
- export const testActor = (actorName, testName, fn, testOptions) => {
40
- const options = {
41
- ...DEFAULT_TEST_ACTOR_OPTIONS,
42
- ...testOptions,
43
- };
44
- const name = `${actorName}: ${testName}`;
45
- const shouldRun = !!RUN_ALL_PLATFORM_TESTS || config.has(actorName);
46
- vitestTest.runIf(shouldRun)(name, options, async (context) => {
47
- const { expect, ...rest } = context;
48
- await fn({
49
- expect: extendExpect(expect),
50
- run: createStartRunFn(actorName, context),
51
- ...rest,
52
- });
53
- });
54
- };
55
- /**
56
- * This wrapper creates a new task with specific `build` of the standby actor and provides
57
- * `callStandby` function, which calls the task's `standbyUrl`.
58
- *
59
- * Using task is just current shortcoming of standby feature but ideally we would use Actor directly
60
- */
61
- export const testStandbyActor = (actorName, testName, fn, testOptions) => {
62
- const options = {
63
- ...DEFAULT_TEST_ACTOR_OPTIONS,
64
- ...testOptions,
65
- };
66
- const name = `${actorName}: ${testName}`;
67
- const shouldRun = !!RUN_ALL_PLATFORM_TESTS || config.has(actorName);
68
- vitestTest.runIf(shouldRun)(name, options, async (context) => {
69
- const standbyTask = await createStandbyTask(actorName, config.get(actorName)?.buildNumber);
70
- const { annotate } = context;
71
- const { expect, ...rest } = context;
72
- // NOTE: we need to wrap `fn` in try-catch so that we can always clean up (delete the task) afterwards
73
- try {
74
- await fn({
75
- expect: extendExpect(expect),
76
- callStandby: createStartStandbyFn(standbyTask),
77
- ...rest,
78
- });
79
- }
80
- catch { }
81
- const { taskId } = standbyTask;
82
- const runs = (await apifyClient.task(taskId).runs().list()).items;
83
- for (const run of runs) {
84
- const runLink = generateRunLink(run);
85
- await annotate(runLink, 'run_link');
86
- }
87
- if (taskId) {
88
- await apifyClient.task(taskId).delete();
89
- }
90
- });
91
- };
92
- export const testTestActor = (testName, fn) => {
93
- vitestTest(testName, async (context) => {
94
- const { expect, ...rest } = context;
95
- await fn({
96
- expect: extendExpect(expect),
97
- // @ts-expect-error: this just to test custom matchers
98
- run: () => { },
99
- ...rest,
100
- });
101
- });
102
- };
103
- export const it = testActor;
104
- /**
105
- * Creates a function the accepts input for a standby actor and sends request containing input
106
- * to the task's standby url.
107
- */
108
- const createStartStandbyFn = (standbyTask) => {
109
- const { standbyUrl } = standbyTask;
110
- return async ({ input }) => {
111
- const response = await fetch(standbyUrl, {
112
- headers: {
113
- Authorization: `Bearer ${apifyClient.token}`,
114
- },
115
- method: 'POST',
116
- body: JSON.stringify(input),
117
- });
118
- const data = (await response.json());
119
- return {
120
- data,
121
- status: response.status,
122
- headers: response.headers,
123
- };
124
- };
125
- };
126
- const randomInt = (min, max) => {
127
- return Math.floor(Math.random() * (max - min + 1)) + min;
128
- };
129
- /**
130
- * Creates a task with specific `build` - either `buildNumber` or default.
131
- *
132
- * @throws if actor doesn't exist or it doesn't support standby mode.
133
- */
134
- const createStandbyTask = async (actorNameOrId, buildNumber) => {
135
- const actor = apifyClient.actor(actorNameOrId);
136
- const actorInfo = (await actor.get());
137
- if (!actorInfo) {
138
- throw new Error(`Actor "${actorNameOrId}" not found`);
139
- }
140
- if (!actorInfo.standbyUrl) {
141
- throw new Error(`Actor "${actorNameOrId}" doesn't support standby mode`);
142
- }
143
- if (!actorInfo.actorStandby) {
144
- throw new Error(`Actor "${actorNameOrId} doesn't contain actorStandby options`);
145
- }
146
- const { isEnabled, ...defaultActorStandby } = actorInfo.actorStandby;
147
- const build = buildNumber ?? defaultActorStandby.build;
148
- const actorStandbyOptions = {
149
- ...defaultActorStandby,
150
- build,
151
- };
152
- try {
153
- const title = `Test task - ${build}:${actorNameOrId}`.slice(0, 62);
154
- // we try to create unique task name containing only `a-z0-9-` characters and at most 63 characters long
155
- const name = `${randomInt(1, 1_000_000)}${title
156
- .toLowerCase()
157
- .replaceAll(/\s+/g, '')
158
- .replaceAll(/[^a-z0-9-]+/g, '-')}`.slice(0, 62);
159
- const newTask = (await apifyClient.tasks().create({
160
- actId: actorNameOrId,
161
- actorStandby: actorStandbyOptions,
162
- description: `Task for testing standby version ${build}`,
163
- title,
164
- name,
165
- }));
166
- const { id, standbyUrl } = newTask;
167
- if (!standbyUrl) {
168
- throw new Error(`Task "${id} doesn't contain standbyUrl property`);
169
- }
170
- return {
171
- standbyUrl,
172
- taskId: id,
173
- };
174
- }
175
- catch (error) {
176
- throw new Error(`Failed to create task: ${error}`);
177
- }
178
- };
179
- const createStartRunFn = (actorNameOrId, testContext) => {
180
- const { annotate, task } = testContext;
181
- const actorConfig = config.get(actorNameOrId);
182
- const build = actorConfig?.buildNumber;
183
- const buildId = actorConfig?.buildId;
184
- return async (runOptions) => {
185
- const { input, options, prefilledInput, runId } = runOptions;
186
- if (runId) {
187
- const run = await apifyClient.run(runId).get();
188
- if (!run) {
189
- throw new Error(`Run with id "${runId}" doesn't exist`);
190
- }
191
- return new RunTestResult(apifyClient, run);
192
- }
193
- const actor = apifyClient.actor(actorNameOrId);
194
- const actorInput = {
195
- ...(prefilledInput && (await getActorPrefilledInput(apifyClient, actorNameOrId, buildId))),
196
- ...input,
197
- };
198
- const run = await actor.call(actorInput, { build, ...options });
199
- const runLink = generateRunLink(run);
200
- await annotate(runLink, 'run_link');
201
- // @ts-expect-error: `TaskMeta` cannot be retyped
202
- task.meta = {
203
- runId: run.id,
204
- runLink,
205
- actorName: actorNameOrId,
206
- };
207
- // waiting for datasetItemCount and chargedEventCounts to sync
208
- await sleep(10_000);
209
- return new RunTestResult(apifyClient, run);
210
- };
211
- };
212
- const generateRunLink = (run) => {
213
- return `https://console.apify.com/view/runs/${run.id}`;
214
- };
215
- //# sourceMappingURL=lib.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"lib.js","sourceRoot":"","sources":["../../lib/lib.ts"],"names":[],"mappings":"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"}
@@ -1,22 +0,0 @@
1
- import { ActorRun, ApifyClient, KeyValueStoreClient } from 'apify-client';
2
- import type { Dataset, SdkCrawlerStatistics } from './types.js';
3
- export declare class RunTestResult {
4
- private readonly apifyClient;
5
- private readonly run;
6
- private log;
7
- private dataset;
8
- private keyValueStoreClient;
9
- private statistics;
10
- private runInfo;
11
- private input;
12
- constructor(apifyClient: ApifyClient, run: ActorRun);
13
- getStatistics: () => Promise<SdkCrawlerStatistics | undefined>;
14
- getLog: () => Promise<string>;
15
- getDataset: <T>() => Promise<Dataset<T>>;
16
- getKeyValueStoreClient: () => KeyValueStoreClient;
17
- getInput: <T>() => Promise<T>;
18
- getRunInfo: () => Promise<ActorRun>;
19
- get id(): string;
20
- get status(): string;
21
- }
22
- //# sourceMappingURL=run-test-result.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"run-test-result.d.ts","sourceRoot":"","sources":["../../lib/run-test-result.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAC1E,OAAO,KAAK,EAAE,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEhE,qBAAa,aAAa;IAQV,OAAO,CAAC,QAAQ,CAAC,WAAW;IAAe,OAAO,CAAC,QAAQ,CAAC,GAAG;IAP3E,OAAO,CAAC,GAAG,CAAqB;IAChC,OAAO,CAAC,OAAO,CAA+B;IAC9C,OAAO,CAAC,mBAAmB,CAAkC;IAC7D,OAAO,CAAC,UAAU,CAAmC;IACrD,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,KAAK,CAAsB;gBAEN,WAAW,EAAE,WAAW,EAAmB,GAAG,EAAE,QAAQ;IAIrF,aAAa,QAAa,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC,CAQjE;IAEF,MAAM,QAAa,OAAO,CAAC,MAAM,CAAC,CAOhC;IAEF,UAAU,GAAU,CAAC,OAAK,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAQ3C;IAEF,sBAAsB,QAAO,mBAAmB,CAO9C;IAEF,QAAQ,GAAU,CAAC,OAAK,OAAO,CAAC,CAAC,CAAC,CAQhC;IAEF,UAAU,QAAa,OAAO,CAAC,QAAQ,CAAC,CAOtC;IAEF,IAAI,EAAE,IAAI,MAAM,CAEf;IAED,IAAI,MAAM,IAAI,MAAM,CAEnB;CACJ"}
@@ -1,73 +0,0 @@
1
- export class RunTestResult {
2
- apifyClient;
3
- run;
4
- log;
5
- dataset;
6
- keyValueStoreClient;
7
- statistics;
8
- runInfo;
9
- input;
10
- constructor(apifyClient, run) {
11
- this.apifyClient = apifyClient;
12
- this.run = run;
13
- /**/
14
- }
15
- getStatistics = async () => {
16
- if (this.statistics) {
17
- return this.statistics;
18
- }
19
- const kvs = this.apifyClient.keyValueStore(this.run.defaultKeyValueStoreId);
20
- const stats = await kvs.getRecord('SDK_CRAWLER_STATISTICS_0');
21
- this.statistics = stats?.value;
22
- return this.statistics;
23
- };
24
- getLog = async () => {
25
- if (this.log) {
26
- return this.log;
27
- }
28
- const runLog = await this.apifyClient.run(this.id).log().get();
29
- this.log = runLog;
30
- return runLog;
31
- };
32
- getDataset = async () => {
33
- if (this.dataset) {
34
- return this.dataset;
35
- }
36
- const dataset = this.apifyClient.dataset(this.run.defaultDatasetId);
37
- const items = (await dataset.listItems()).items;
38
- this.dataset = { items };
39
- return this.dataset;
40
- };
41
- getKeyValueStoreClient = () => {
42
- if (this.keyValueStoreClient) {
43
- return this.keyValueStoreClient;
44
- }
45
- const keyValueStoreClient = this.apifyClient.keyValueStore(this.run.defaultKeyValueStoreId);
46
- this.keyValueStoreClient = keyValueStoreClient;
47
- return keyValueStoreClient;
48
- };
49
- getInput = async () => {
50
- if (this.input) {
51
- return this.input;
52
- }
53
- const kvs = this.apifyClient.keyValueStore(this.run.defaultKeyValueStoreId);
54
- const input = await kvs.getRecord('INPUT');
55
- this.input = input?.value;
56
- return this.input;
57
- };
58
- getRunInfo = async () => {
59
- if (this.runInfo) {
60
- return this.runInfo;
61
- }
62
- const run = this.apifyClient.run(this.run.id);
63
- this.runInfo = await run.get();
64
- return this.runInfo;
65
- };
66
- get id() {
67
- return this.run.id;
68
- }
69
- get status() {
70
- return this.run.status;
71
- }
72
- }
73
- //# sourceMappingURL=run-test-result.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"run-test-result.js","sourceRoot":"","sources":["../../lib/run-test-result.ts"],"names":[],"mappings":"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"}
@@ -1,127 +0,0 @@
1
- import { ActorCallOptions } from 'apify-client';
2
- import { Assertion, TestOptions } from 'vitest';
3
- export type ActorBuild = {
4
- buildId: string;
5
- actorId: string;
6
- buildNumber: string;
7
- actorName: string;
8
- };
9
- export type RunOptions<T> = {
10
- input: Omit<T, 'actorName'>;
11
- options?: ActorCallOptions;
12
- prefilledInput?: boolean;
13
- /**
14
- * If you specify `runId`, all the other options will be ignored and this run's data will
15
- * be downloaded instead.
16
- *
17
- * This is usefull for testing your tests on existing runs
18
- */
19
- runId?: string;
20
- };
21
- export type Dataset<T> = {
22
- items: T[];
23
- };
24
- export type OpenInterval = {
25
- min: number;
26
- max?: undefined;
27
- } | {
28
- min?: undefined;
29
- max: number;
30
- };
31
- export type ClosedInterval = {
32
- min: number;
33
- max: number;
34
- };
35
- export type Interval = number | OpenInterval | ClosedInterval;
36
- export type ToFinishWithOptionsWithDefaults = {
37
- status: RunStatus;
38
- duration: Interval | null;
39
- failedRequests: Interval | null;
40
- requestsRetries: Interval | null;
41
- forbiddenLogs: string[];
42
- maxRetriesPerRequest: number | null;
43
- };
44
- export type IntervalOption<PpeEvent extends string> = keyof Pick<ToFinishWithOptions<PpeEvent>, 'datasetItemCount' | 'requestsRetries' | 'failedRequests' | 'duration'>;
45
- export type ToFinishWithOptions<PpeEvent extends string> = Partial<ToFinishWithOptionsWithDefaults> & {
46
- datasetItemCount: Interval;
47
- /**
48
- * Define expected charged (PPE) event counts. You can also define count as `Interval`.
49
- *
50
- * Example
51
- * ```ts
52
- * chargedEventCounts: {
53
- * 'actor-start': 4,
54
- * 'item-pushed': { min: 10, max: 20 },
55
- * }
56
- * ```
57
- *
58
- * If you omit any PPE event, it's expected count will be 0.
59
- * Assertion will fail if `chargedEventCounts` doesn't contain some of the expected events.
60
- */
61
- chargedEventCounts?: Record<PpeEvent, Interval>;
62
- };
63
- export type SdkCrawlerStatistics = {
64
- requestsFinished: number;
65
- requestsFailed: number;
66
- requestsRetries: number;
67
- requestsFailedPerMinute: number;
68
- requestsFinishedPerMinute: number;
69
- requestMinDurationMillis: number;
70
- requestMaxDurationMillis: number;
71
- requestRetryHistogram: number[];
72
- requestTotalFailedDurationMillis: number;
73
- requestTotalFinishedDurationMillis: number;
74
- crawlerStartedAt: string;
75
- crawlerFinishedAt: string;
76
- statsPersistedAt: string;
77
- crawlerRuntimeMillis: number;
78
- crawlerLastStartTimestamp: number;
79
- };
80
- export type RunStatus = 'SUCCEEDED' | 'READY' | 'RUNNING' | 'FAILED' | 'ABORTING' | 'ABORTED' | 'TIMING-OUT' | 'TIMED-OUT';
81
- export interface ActorMatchers<R = unknown> {
82
- toBeArray: () => R;
83
- toBeBoolean: () => R;
84
- toBeEmptyArray: () => R;
85
- toBeNonEmptyArray: () => R;
86
- toBeNonEmptyString: () => R;
87
- toBeNumber: () => R;
88
- toBeFalse: () => R;
89
- toBeTrue: () => R;
90
- toBeNonEmptyObject: () => R;
91
- toBeObject: () => R;
92
- toBeString: () => R;
93
- toBeWholeNumber: () => R;
94
- toBeWithinRange: (lower: number, upper: number) => R;
95
- /**
96
- * Validates the following properties of a run:
97
- * - `status` (default: `SUCCEEDED`)
98
- * - `duration` in milliseconds (default: `{ min: 600, max: 600_000}` - <0.6s, 10min>)
99
- * - `failedRequests` (default: `0`)
100
- * - `requestsRetries` (default: `{ max: 3 }`)
101
- * - `forbiddenLogs` (default: `['ReferenceError', 'TypeError']`)
102
- * - `maxRetriesPerRequest` (not checked by default)
103
- * - `datasetItemCount` (required)
104
- * - `chargedEventCounts`
105
- */
106
- toFinishWith: <PpeEvent extends string>(options: ToFinishWithOptions<PpeEvent>) => Promise<R>;
107
- toStartWith: (prefix: string) => R;
108
- hard: <T>(actual: T, message?: string) => Assertion;
109
- }
110
- export type ActorTestOptions = Omit<TestOptions, 'retry'> & {
111
- /**
112
- * Times to retry the test if fails. Useful for making flaky tests more stable.
113
- * When retries is up, the last test error will be thrown.
114
- *
115
- * @default 1
116
- */
117
- retry?: TestOptions['retry'];
118
- };
119
- declare module 'vitest' {
120
- interface Assertion<T = any> extends ActorMatchers<T> {
121
- }
122
- interface Matchers<T = any> extends ActorMatchers<T> {
123
- }
124
- interface AsymmetricMatchersContaining extends ActorMatchers {
125
- }
126
- }
127
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../lib/types.ts"],"names":[],"mappings":"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"}
package/dist/lib/types.js DELETED
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../lib/types.ts"],"names":[],"mappings":""}
@@ -1,8 +0,0 @@
1
- import { ApifyClient } from 'apify-client';
2
- /**
3
- * Gets prefilled values for a provided build or, if not provided, uses actor's
4
- * default build (this is usually `latest`).
5
- */
6
- export declare const getActorPrefilledInput: (apifyClient: ApifyClient, actorNameOrId: string, buildId: string | undefined) => Promise<Record<string, unknown>>;
7
- export declare const sleep: (ms: number) => Promise<void>;
8
- //# sourceMappingURL=utils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,WAAW,EAAE,MAAM,cAAc,CAAC;AAGrD;;;GAGG;AACH,eAAO,MAAM,sBAAsB,GAC/B,aAAa,WAAW,EACxB,eAAe,MAAM,EACrB,SAAS,MAAM,GAAG,SAAS,qCAuC9B,CAAC;AAEF,eAAO,MAAM,KAAK,GAAU,IAAI,MAAM,kBAErC,CAAA"}
package/dist/lib/utils.js DELETED
@@ -1,33 +0,0 @@
1
- /**
2
- * Gets prefilled values for a provided build or, if not provided, uses actor's
3
- * default build (this is usually `latest`).
4
- */
5
- export const getActorPrefilledInput = async (apifyClient, actorNameOrId, buildId) => {
6
- if (!buildId) {
7
- const actorInfo = await apifyClient.actor(actorNameOrId).get();
8
- const defaultBuildTag = actorInfo?.defaultRunOptions.build;
9
- const taggedBuild = actorInfo?.taggedBuilds?.[defaultBuildTag || ''];
10
- buildId = taggedBuild?.buildId;
11
- if (!buildId) {
12
- console.error(`Coudn't find default build for actor ${actorNameOrId}. Prefilled values will not be used.`);
13
- return {};
14
- }
15
- }
16
- const buildInfo = await apifyClient.build(buildId).get();
17
- const inputSchema = buildInfo?.actorDefinition?.input;
18
- if (!inputSchema) {
19
- console.error(`Coudn't find input schema definition for actor ${actorNameOrId}, build ${buildId}.`, 'Prefilled values will not be used');
20
- return {};
21
- }
22
- const prefill = {};
23
- for (const [propertyName, propertyValue] of Object.entries(inputSchema.properties)) {
24
- if (propertyValue.prefill !== undefined) {
25
- prefill[propertyName] = propertyValue.prefill;
26
- }
27
- }
28
- return prefill;
29
- };
30
- export const sleep = async (ms) => {
31
- await new Promise((resolve) => setTimeout(resolve, ms));
32
- };
33
- //# sourceMappingURL=utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../lib/utils.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,KAAK,EACvC,WAAwB,EACxB,aAAqB,EACrB,OAA2B,EAC7B,EAAE;IACA,IAAI,CAAC,OAAO,EAAE,CAAC;QACX,MAAM,SAAS,GAAG,MAAM,WAAW,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,GAAG,EAAE,CAAC;QAE/D,MAAM,eAAe,GAAG,SAAS,EAAE,iBAAiB,CAAC,KAAK,CAAC;QAE3D,MAAM,WAAW,GAAG,SAAS,EAAE,YAAY,EAAE,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC;QACrE,OAAO,GAAG,WAAW,EAAE,OAAO,CAAC;QAE/B,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,wCAAwC,aAAa,sCAAsC,CAAC,CAAC;YAC3G,OAAO,EAAE,CAAA;QACb,CAAC;IACL,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC;IAEzD,MAAM,WAAW,GAAG,SAAS,EAAE,eAAe,EAAE,KAEnC,CAAA;IAEb,IAAI,CAAC,WAAW,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CACT,kDAAkD,aAAa,WAAW,OAAO,GAAG,EACpF,mCAAmC,CACtC,CAAC;QACF,OAAO,EAAE,CAAA;IACb,CAAC;IAED,MAAM,OAAO,GAA4B,EAAE,CAAC;IAE5C,KAAK,MAAM,CAAC,YAAY,EAAE,aAAa,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC;QACjF,IAAI,aAAa,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YACtC,OAAO,CAAC,YAAY,CAAC,GAAG,aAAa,CAAC,OAAO,CAAC;QAClD,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CAAC;AACnB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,KAAK,GAAG,KAAK,EAAE,EAAU,EAAE,EAAE;IACtC,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC5D,CAAC,CAAA"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=custom-matchers.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"custom-matchers.test.d.ts","sourceRoot":"","sources":["../../../test/unit/custom-matchers.test.ts"],"names":[],"mappings":""}
@@ -1,75 +0,0 @@
1
- import process from 'process';
2
- import { describe } from 'vitest';
3
- import { ApifyClient } from 'apify-client';
4
- import { testStandbyActor, testTestActor } from '../../lib/lib.js';
5
- import { RunTestResult } from '../../lib/run-test-result.js';
6
- var PpeEventEnum;
7
- (function (PpeEventEnum) {
8
- PpeEventEnum["ACTOR_START"] = "actor-start";
9
- PpeEventEnum["SEARCH_PAGE_SCRAPED"] = "search-page-scraped";
10
- PpeEventEnum["ADS_SCRAPED"] = "ads-scraped";
11
- })(PpeEventEnum || (PpeEventEnum = {}));
12
- const PPE_EVENT_CONST = {
13
- ACTOR_START: 'actor-start',
14
- ITEM_PUSHED: 'search-page-scraped',
15
- ADS_SCRAPED: 'ads-scraped',
16
- };
17
- describe('custom-matchers', { timeout: 100_000 }, () => {
18
- testTestActor('basic', async ({ expect }) => {
19
- const apifyClient = new ApifyClient({ token: process.env.TESTER_APIFY_TOKEN });
20
- const run = await apifyClient.run('k5MNKmaDGHlABDn2I').get();
21
- const runResult = new RunTestResult(apifyClient, run);
22
- await expect(runResult).toFinishWith({
23
- datasetItemCount: { min: 10, max: 20 },
24
- duration: 10,
25
- status: 'TIMING-OUT',
26
- chargedEventCounts: {
27
- 'actor-start': 1,
28
- 'search-page-scraped': { min: 1 },
29
- 'ads-scraped': 3,
30
- },
31
- });
32
- await expect(runResult).toFinishWith({
33
- datasetItemCount: { min: 10, max: 20 },
34
- chargedEventCounts: {
35
- 'actor-start': 1,
36
- 'search-page-scraped': { min: 1 },
37
- 'ads-scraped': 0,
38
- },
39
- });
40
- await expect(runResult).toFinishWith({
41
- datasetItemCount: { min: 1, max: 20 },
42
- chargedEventCounts: {
43
- 'actor-start': 1,
44
- 'search-page-scraped': { min: 1 },
45
- 'ads-scraped': 0,
46
- },
47
- });
48
- expect(3).toEqual(3);
49
- expect.hard(5).toEqual(5);
50
- expect(10).toEqual(10);
51
- });
52
- testStandbyActor('ondrejklinovsky/contact-info', 'CDS standby', async ({ expect, callStandby }) => {
53
- {
54
- const { data, status } = await callStandby({
55
- input: {
56
- startUrls: [{ url: 'https://apify.com' }],
57
- maxRequests: 3,
58
- aggregateContacts: true,
59
- },
60
- });
61
- expect(status).toBe(200);
62
- expect(data[0].domain).toEqual('apify.com');
63
- }
64
- const { data, status } = await callStandby({
65
- input: {
66
- startUrls: [{ url: 'https://apify.com' }],
67
- maxRequests: 3,
68
- aggregateContacts: true,
69
- },
70
- });
71
- expect(status).toBe(200);
72
- expect(data[0].domain).toEqual('apify.com');
73
- });
74
- });
75
- //# sourceMappingURL=custom-matchers.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"custom-matchers.test.js","sourceRoot":"","sources":["../../../test/unit/custom-matchers.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=parse-commit.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"parse-commit.test.d.ts","sourceRoot":"","sources":["../../../test/unit/parse-commit.test.ts"],"names":[],"mappings":""}