test(ci): [CI-TYPES-02] gate installed types across all libraries

This commit is contained in:
Harvey Zhao committed 2026-09-15 20:15:58 +08:00
1 parent 00c131bff1
commit 01f3d00e4c
17 files changed
+974 -8

No files matched your search

+3
View File
@@ -99,6 +99,7 @@ export function validateCIWorkflow(source) {
['test:vue-consumer', 'vue-consumer', 'vue-consumer-*/'],
['test:iframe-history', 'iframe-history', 'iframe-history/'],
['test:performance', 'performance', 'performance/'],
['test:ecosystem-types', 'ecosystem-types', 'ecosystem-types/'],
]) {
const index = consumers.steps.findIndex(step => step.run === `yarn ${command} 2>&1 | tee refactor/.cache/ci/${log}.log`)
assert(index > consumerIndex && !Object.hasOwn(consumers.steps[index], 'if'), 'Run complete consumers after restoring canonical Node')
@@ -106,6 +107,8 @@ export function validateCIWorkflow(source) {
assert(!browser.steps.some(step => step.run?.includes(`yarn ${command}`)), 'Do not repeat all-engine consumers in each playback leg')
consumerIndex = index
}
for (const suffix of ['*.json', '*.log'])
assert(consumerUpload.with.path.split('\n').includes(`refactor/.cache/*-package-types-*/${suffix}`), 'Retain specialized installed type evidence')
const extraIndex = browser.steps.findIndex(step => step.run?.startsWith('yarn test:package --browser '))
const sourceEngineIndex = browser.steps.findIndex(step => step.run === 'yarn test:browser:source --project=${{ matrix.browser }} 2>&1 | tee refactor/.cache/ci/browser-source.log')
const engineIndex = browser.steps.findIndex(step => step.run === 'yarn test:browser:installed --project=${{ matrix.browser }} 2>&1 | tee refactor/.cache/ci/browser-installed.log')
+6
View File
@@ -67,6 +67,12 @@ for (const [name, mutate] of [
}],
['browser runtime not restored', w => w.jobs['browser-consumers'].steps.find(s => s.id === 'restore-canonical-node').with = { 'node-version': '22.12.0', 'package-manager-cache': false }],
['skipped React consumer', w => w.jobs['browser-consumers'].steps.find(s => s.run?.startsWith('yarn test:react-consumer')).if = 'false'],
['skipped ecosystem types', w => w.jobs['browser-consumers'].steps.find(s => s.run?.startsWith('yarn test:ecosystem-types')).if = 'false'],
['removed ecosystem types', w => w.jobs['browser-consumers'].steps = w.jobs['browser-consumers'].steps.filter(s => !s.run?.startsWith('yarn test:ecosystem-types'))],
['missing specialized type evidence', (w) => {
const upload = w.jobs['browser-consumers'].steps.find(s => s.uses?.startsWith('actions/upload-artifact@'))
upload.with.path = upload.with.path.replace('refactor/.cache/*-package-types-*/*.json', '')
}],
['removed React consumer', w => w.jobs['browser-consumers'].steps = w.jobs['browser-consumers'].steps.filter(s => !s.run?.startsWith('yarn test:react-consumer'))],
['missing React evidence', w => w.jobs['browser-consumers'].steps.find(s => s.uses?.startsWith('actions/upload-artifact@')).with.path = 'refactor/.cache/ci/'],
['skipped Vue consumer', w => w.jobs['browser-consumers'].steps.find(s => s.run?.startsWith('yarn test:vue-consumer')).if = 'false'],
+1
View File
@@ -112,6 +112,7 @@ export function readImpactModel(directory) {
'checks yarn ci:check',
'checks yarn ci:build',
'browser-consumers yarn test:package',
'browser-consumers yarn test:ecosystem-types',
'browser-smoke yarn test:package --browser',
'browser-smoke yarn test:browser:source --project=${{ matrix.browser }}',
'browser-smoke yarn test:browser:installed --project=${{ matrix.browser }}',