apify-test-tools 0.7.1-beta.0 → 0.7.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.
- package/CHANGELOG.md +1 -3
- package/bin/diff-changes.ts +22 -10
- package/dist/bin/diff-changes.d.ts.map +1 -1
- package/dist/bin/diff-changes.js +13 -7
- package/dist/bin/diff-changes.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +61 -61
package/CHANGELOG.md
CHANGED
|
@@ -2,15 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
## 0.7.1 - **not yet released**
|
|
5
|
+
## [0.7.1](https://github.com/apify/apify-test-tools/releases/tag/v0.7.1) (2026-04-27)
|
|
7
6
|
|
|
8
7
|
### 🚀 Features
|
|
9
8
|
|
|
10
9
|
- Add default 1 hour test run timeout ([#79](https://github.com/apify/apify-test-tools/pull/79)) ([c438350](https://github.com/apify/apify-test-tools/commit/c4383509b49228e251594b4b0a5c48fde94e71f7)) by [@Patai5](https://github.com/Patai5)
|
|
11
10
|
|
|
12
11
|
|
|
13
|
-
<!-- git-cliff-unreleased-end -->
|
|
14
12
|
## [0.7.0](https://github.com/apify/apify-test-tools/releases/tag/v0.7.0) (2026-04-10)
|
|
15
13
|
|
|
16
14
|
### 🚀 Features
|
package/bin/diff-changes.ts
CHANGED
|
@@ -44,7 +44,7 @@ const isIgnoredTopLevelFile = (lowercaseFilePath: string) => {
|
|
|
44
44
|
type FileChange =
|
|
45
45
|
| { impact: 'ignored' }
|
|
46
46
|
// Only things that influence how the Actor looks - e.g. README and CHANGELOG files, schema titles, descriptions, reordering, etc. We only need to rebuild on release
|
|
47
|
-
| { impact: 'cosmetic'; includes: 'all-actors' | ActorConfig }
|
|
47
|
+
| { impact: 'cosmetic'; semanticallyVerified: boolean; includes: 'all-actors' | ActorConfig }
|
|
48
48
|
// Influences how the Actor works - we need to run tests
|
|
49
49
|
| {
|
|
50
50
|
impact: 'functional';
|
|
@@ -59,7 +59,7 @@ const classifyFileChange = (originalFilePath: string, actorConfigs: ActorConfig[
|
|
|
59
59
|
}
|
|
60
60
|
|
|
61
61
|
if (lowercaseFilePath.endsWith('changelog.md')) {
|
|
62
|
-
return { impact: 'cosmetic', includes: 'all-actors' };
|
|
62
|
+
return { impact: 'cosmetic', semanticallyVerified: false, includes: 'all-actors' };
|
|
63
63
|
}
|
|
64
64
|
|
|
65
65
|
const actorFolderInfo = maybeParseActorFolder(lowercaseFilePath);
|
|
@@ -79,11 +79,11 @@ const classifyFileChange = (originalFilePath: string, actorConfigs: ActorConfig[
|
|
|
79
79
|
return { impact: 'ignored' };
|
|
80
80
|
}
|
|
81
81
|
if (lowercaseFilePath.endsWith('readme.md')) {
|
|
82
|
-
return { impact: 'cosmetic', includes: actorConfigChanged };
|
|
82
|
+
return { impact: 'cosmetic', semanticallyVerified: false, includes: actorConfigChanged };
|
|
83
83
|
}
|
|
84
84
|
// originalFilePath must be used here (not lowercaseFilePath) — git show is case-sensitive on Linux
|
|
85
85
|
if (lowercaseFilePath.endsWith('.json') && isCosmeticOnlyJsonSchemaChange(commits, originalFilePath)) {
|
|
86
|
-
return { impact: 'cosmetic', includes: actorConfigChanged };
|
|
86
|
+
return { impact: 'cosmetic', semanticallyVerified: true, includes: actorConfigChanged };
|
|
87
87
|
}
|
|
88
88
|
|
|
89
89
|
return { impact: 'functional', includes: actorConfigChanged };
|
|
@@ -127,20 +127,32 @@ export const getChangedActors = ({
|
|
|
127
127
|
const actorsChanged = Array.from(actorsChangedMap.values());
|
|
128
128
|
|
|
129
129
|
// All below here is just for logging
|
|
130
|
+
const formatFiles = (files: string[]) => (files.length > 0 ? files.join(', ') : '<no files>');
|
|
131
|
+
|
|
130
132
|
const ignoredFilesChanged = filepathsChanged.filter(
|
|
131
133
|
(file) => classifyFileChange(file, actorConfigs, commits).impact === 'ignored',
|
|
132
134
|
);
|
|
133
|
-
console.error(`[DIFF]: Ignored files (don't trigger test or build): ${ignoredFilesChanged
|
|
134
|
-
|
|
135
|
-
const
|
|
136
|
-
(file) => classifyFileChange(file, actorConfigs, commits)
|
|
135
|
+
console.error(`[DIFF]: Ignored files (don't trigger test or build): ${formatFiles(ignoredFilesChanged)}`);
|
|
136
|
+
|
|
137
|
+
const cosmeticChanges = filepathsChanged
|
|
138
|
+
.map((file) => ({ file, change: classifyFileChange(file, actorConfigs, commits) }))
|
|
139
|
+
.filter(({ change }) => change.impact === 'cosmetic') as {
|
|
140
|
+
file: string;
|
|
141
|
+
change: Extract<FileChange, { impact: 'cosmetic' }>;
|
|
142
|
+
}[];
|
|
143
|
+
const semanticallyVerifiedFiles = cosmeticChanges.filter(({ change }) => change.semanticallyVerified).map(({ file }) => file);
|
|
144
|
+
const inherentlyCosmeticFiles = cosmeticChanges.filter(({ change }) => !change.semanticallyVerified).map(({ file }) => file);
|
|
145
|
+
console.error(
|
|
146
|
+
`[DIFF]: Cosmetic-only JSON schema changes (semantically verified, only trigger release build): ${formatFiles(semanticallyVerifiedFiles)}`,
|
|
147
|
+
);
|
|
148
|
+
console.error(
|
|
149
|
+
`[DIFF]: Inherently cosmetic files (README, CHANGELOG — only trigger release build): ${formatFiles(inherentlyCosmeticFiles)}`,
|
|
137
150
|
);
|
|
138
|
-
console.error(`[DIFF]: Cosmetic files (should only trigger release build): ${cosmeticFilesChanged.join(', ')}`);
|
|
139
151
|
|
|
140
152
|
const functionalFilesChanged = filepathsChanged.filter(
|
|
141
153
|
(file) => classifyFileChange(file, actorConfigs, commits).impact === 'functional',
|
|
142
154
|
);
|
|
143
|
-
console.error(`[DIFF]: Functional files (trigger test & release build): ${functionalFilesChanged
|
|
155
|
+
console.error(`[DIFF]: Functional files (trigger test & release build): ${formatFiles(functionalFilesChanged)}`);
|
|
144
156
|
|
|
145
157
|
if (actorsChanged.length > 0) {
|
|
146
158
|
const miniactors = actorsChanged.filter((config) => !config.isStandalone).map((config) => config.actorName);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diff-changes.d.ts","sourceRoot":"","sources":["../../bin/diff-changes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEtD,UAAU,yBAAyB;IAC/B,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,eAAO,MAAM,qBAAqB,GAC9B,mBAAmB,MAAM,KAC1B;IAAE,aAAa,EAAE,IAAI,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,aAAa,EAAE,KAAK,CAAA;CAOrE,CAAC;AA4EF,eAAO,MAAM,gBAAgB,GAAI,wDAK9B,yBAAyB,KAAG,WAAW,
|
|
1
|
+
{"version":3,"file":"diff-changes.d.ts","sourceRoot":"","sources":["../../bin/diff-changes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEtD,UAAU,yBAAyB;IAC/B,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,eAAO,MAAM,qBAAqB,GAC9B,mBAAmB,MAAM,KAC1B;IAAE,aAAa,EAAE,IAAI,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,aAAa,EAAE,KAAK,CAAA;CAOrE,CAAC;AA4EF,eAAO,MAAM,gBAAgB,GAAI,wDAK9B,yBAAyB,KAAG,WAAW,EAoEzC,CAAC"}
|
package/dist/bin/diff-changes.js
CHANGED
|
@@ -34,7 +34,7 @@ const classifyFileChange = (originalFilePath, actorConfigs, commits) => {
|
|
|
34
34
|
return { impact: 'ignored' };
|
|
35
35
|
}
|
|
36
36
|
if (lowercaseFilePath.endsWith('changelog.md')) {
|
|
37
|
-
return { impact: 'cosmetic', includes: 'all-actors' };
|
|
37
|
+
return { impact: 'cosmetic', semanticallyVerified: false, includes: 'all-actors' };
|
|
38
38
|
}
|
|
39
39
|
const actorFolderInfo = maybeParseActorFolder(lowercaseFilePath);
|
|
40
40
|
if (actorFolderInfo.isActorFolder) {
|
|
@@ -48,11 +48,11 @@ const classifyFileChange = (originalFilePath, actorConfigs, commits) => {
|
|
|
48
48
|
return { impact: 'ignored' };
|
|
49
49
|
}
|
|
50
50
|
if (lowercaseFilePath.endsWith('readme.md')) {
|
|
51
|
-
return { impact: 'cosmetic', includes: actorConfigChanged };
|
|
51
|
+
return { impact: 'cosmetic', semanticallyVerified: false, includes: actorConfigChanged };
|
|
52
52
|
}
|
|
53
53
|
// originalFilePath must be used here (not lowercaseFilePath) — git show is case-sensitive on Linux
|
|
54
54
|
if (lowercaseFilePath.endsWith('.json') && isCosmeticOnlyJsonSchemaChange(commits, originalFilePath)) {
|
|
55
|
-
return { impact: 'cosmetic', includes: actorConfigChanged };
|
|
55
|
+
return { impact: 'cosmetic', semanticallyVerified: true, includes: actorConfigChanged };
|
|
56
56
|
}
|
|
57
57
|
return { impact: 'functional', includes: actorConfigChanged };
|
|
58
58
|
}
|
|
@@ -83,12 +83,18 @@ export const getChangedActors = ({ filepathsChanged, actorConfigs, isLatest = fa
|
|
|
83
83
|
}
|
|
84
84
|
const actorsChanged = Array.from(actorsChangedMap.values());
|
|
85
85
|
// All below here is just for logging
|
|
86
|
+
const formatFiles = (files) => (files.length > 0 ? files.join(', ') : '<no files>');
|
|
86
87
|
const ignoredFilesChanged = filepathsChanged.filter((file) => classifyFileChange(file, actorConfigs, commits).impact === 'ignored');
|
|
87
|
-
console.error(`[DIFF]: Ignored files (don't trigger test or build): ${ignoredFilesChanged
|
|
88
|
-
const
|
|
89
|
-
|
|
88
|
+
console.error(`[DIFF]: Ignored files (don't trigger test or build): ${formatFiles(ignoredFilesChanged)}`);
|
|
89
|
+
const cosmeticChanges = filepathsChanged
|
|
90
|
+
.map((file) => ({ file, change: classifyFileChange(file, actorConfigs, commits) }))
|
|
91
|
+
.filter(({ change }) => change.impact === 'cosmetic');
|
|
92
|
+
const semanticallyVerifiedFiles = cosmeticChanges.filter(({ change }) => change.semanticallyVerified).map(({ file }) => file);
|
|
93
|
+
const inherentlyCosmeticFiles = cosmeticChanges.filter(({ change }) => !change.semanticallyVerified).map(({ file }) => file);
|
|
94
|
+
console.error(`[DIFF]: Cosmetic-only JSON schema changes (semantically verified, only trigger release build): ${formatFiles(semanticallyVerifiedFiles)}`);
|
|
95
|
+
console.error(`[DIFF]: Inherently cosmetic files (README, CHANGELOG — only trigger release build): ${formatFiles(inherentlyCosmeticFiles)}`);
|
|
90
96
|
const functionalFilesChanged = filepathsChanged.filter((file) => classifyFileChange(file, actorConfigs, commits).impact === 'functional');
|
|
91
|
-
console.error(`[DIFF]: Functional files (trigger test & release build): ${functionalFilesChanged
|
|
97
|
+
console.error(`[DIFF]: Functional files (trigger test & release build): ${formatFiles(functionalFilesChanged)}`);
|
|
92
98
|
if (actorsChanged.length > 0) {
|
|
93
99
|
const miniactors = actorsChanged.filter((config) => !config.isStandalone).map((config) => config.actorName);
|
|
94
100
|
const standaloneActors = actorsChanged
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diff-changes.js","sourceRoot":"","sources":["../../bin/diff-changes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAAE,MAAM,uBAAuB,CAAC;AAUvE,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACjC,iBAAyB,EAC4C,EAAE;IACvE,MAAM,KAAK,GAAG,iBAAiB,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC9E,IAAI,KAAK,EAAE,CAAC;QACR,gJAAgJ;QAChJ,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,EAAE,CAAC;IACpF,CAAC;IACD,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC;AACpC,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,qBAAqB,GAAG,CAAC,iBAAyB,EAAE,EAAE;IACxD,+HAA+H;IAC/H,MAAM,uBAAuB,GAAG;QAC5B,UAAU;QACV,YAAY;QACZ,WAAW;QACX,SAAS;QACT,WAAW;QACX,mBAAmB;QACnB,aAAa;QACb,eAAe;QACf,SAAS;KACZ,CAAC;IACF,+EAA+E;IAC/E,MAAM,0BAA0B,GAAG,iBAAiB,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAErG,OAAO,uBAAuB,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,0BAA0B,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;AAC7G,CAAC,CAAC;AAYF,MAAM,kBAAkB,GAAG,CAAC,gBAAwB,EAAE,YAA2B,EAAE,OAAiB,EAAc,EAAE;IAChH,gGAAgG;IAChG,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,WAAW,EAAE,CAAC;IACzD,IAAI,qBAAqB,CAAC,iBAAiB,CAAC,EAAE,CAAC;QAC3C,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IACjC,CAAC;IAED,IAAI,iBAAiB,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;QAC7C,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"diff-changes.js","sourceRoot":"","sources":["../../bin/diff-changes.ts"],"names":[],"mappings":"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"}
|