apify-test-tools 0.7.1-beta.0 → 0.7.1-beta.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.
@@ -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.join(', ')}`);
134
-
135
- const cosmeticFilesChanged = filepathsChanged.filter(
136
- (file) => classifyFileChange(file, actorConfigs, commits).impact === 'cosmetic',
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.join(', ')}`);
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,EAwDzC,CAAC"}
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"}
@@ -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.join(', ')}`);
88
- const cosmeticFilesChanged = filepathsChanged.filter((file) => classifyFileChange(file, actorConfigs, commits).impact === 'cosmetic');
89
- console.error(`[DIFF]: Cosmetic files (should only trigger release build): ${cosmeticFilesChanged.join(', ')}`);
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.join(', ')}`);
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":"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"}
1
+ {"version":3,"file":"diff-changes.js","sourceRoot":"","sources":["../../bin/diff-changes.ts"],"names":[],"mappings":"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"}