From 8207965754b2f28bcffc37372725be730acbed03 Mon Sep 17 00:00:00 2001 From: rain <982766701@qq.com> Date: Wed, 12 Aug 2026 18:23:30 +0800 Subject: [PATCH] test: replace legacy suite with core project checks --- package.json | 5 + scripts/check-project.mjs | 133 ++ tests/a01-a02-ui-contract.ps1 | 256 --- tests/a01-no-photoshop-pipeline-contract.ps1 | 36 - tests/a01-password-login-runtime-smoke.js | 249 -- tests/a01-responsive-runtime-smoke.js | 202 -- .../a01-retired-pipeline-removal-contract.ps1 | 66 - tests/a03-route-removal-contract.ps1 | 11 - tests/a04-registration-contract.ps1 | 134 -- tests/a04-registration-runtime-smoke.js | 148 -- tests/a05-reset-password-contract.ps1 | 115 - tests/a05-reset-password-runtime-smoke.js | 172 -- tests/a05-success-asset-contract.ps1 | 8 - tests/a06-auth-status-contract.ps1 | 98 - tests/a06-auth-status-runtime-smoke.js | 112 - ...ctive-page-business-ownership-contract.ps1 | 37 - tests/adaptive-frame-profiles-contract.ps1 | 46 - tests/ag-responsive-surfaces-contract.ps1 | 51 - tests/all-page-route-runtime-smoke.js | 188 -- tests/app-button-compact-contract.ps1 | 28 - ...app-dialog-responsive-content-contract.ps1 | 34 - tests/app-loading-contract.ps1 | 33 - tests/auth-accessibility-static-contract.ps1 | 134 -- ...uth-android-accessibility-release-gate.ps1 | 28 - tests/auth-api-runtime-smoke.js | 302 --- tests/auth-code-action-visual-contract.ps1 | 40 - tests/auth-page-shell-contract.ps1 | 41 - .../auth-post-commit-navigation-contract.ps1 | 68 - tests/auth-sms-cooldown-runtime-smoke.js | 87 - tests/auth-tac-integration-contract.ps1 | 133 -- tests/auth-tac-openapi-contract.ps1 | 52 - tests/auth-verification-runtime-smoke.js | 164 -- .../ceremony-invitations-api-runtime-smoke.js | 82 - tests/compile-audit.ps1 | 68 - tests/core-flow-contract.ps1 | 158 -- tests/current-documentation-contract.ps1 | 1041 --------- tests/current-openapi-inventory-contract.ps1 | 104 - tests/data-driven-layout-contract.ps1 | 85 - tests/data-driven-layout-risk-allowlist.json | 530 ----- tests/data-driven-layout-runtime-smoke.js | 188 -- tests/default-avatar-contract.ps1 | 34 - tests/discard-confirmation-runtime-smoke.js | 52 - tests/document-flow-position-allowlist.json | 137 -- tests/document-flow-position-contract.ps1 | 46 - tests/f-business-flow-contract.ps1 | 40 - tests/f-business-flow-runtime-smoke.js | 111 - tests/f-series-all-states-visual-contract.ps1 | 16 - tests/f01-document-flow-contract.ps1 | 26 - tests/f01-module-baseline-contract.ps1 | 22 - tests/f01-product-entry-contract.ps1 | 10 - tests/f02-document-flow-contract.ps1 | 18 - tests/f05-expired-state-contract.ps1 | 30 - tests/f06-article-editor-contract.ps1 | 45 - tests/f06-editor-context-contract.ps1 | 19 - tests/f08-album-assets-contract.ps1 | 30 - tests/f08-album-detail-contract.ps1 | 62 - tests/f08-album-detail-runtime-smoke.js | 100 - tests/f08-f09-album-context-contract.ps1 | 14 - tests/f09-media-upload-contract.ps1 | 87 - tests/f09-media-upload-layout-smoke.js | 78 - tests/f09-media-upload-runtime-smoke.js | 117 - tests/f10-video-status-contract.ps1 | 45 - tests/f10-video-status-runtime-smoke.js | 78 - tests/family-create-api-runtime-smoke.js | 152 -- tests/family-create-pages-contract.ps1 | 39 - .../family-editors-document-flow-contract.ps1 | 15 - ...feed-read-openapi-adversarial-contract.ps1 | 990 -------- tests/family-feed-read-openapi-contract.ps1 | 1377 ----------- tests/family-fixture-runtime-smoke.js | 150 -- tests/feedback-api-runtime-smoke.js | 203 -- tests/feedback-openapi-contract.ps1 | 41 - tests/file-upload-api-runtime-smoke.js | 161 -- tests/fixed-navigation-position-contract.ps1 | 13 - tests/form-enum-api-runtime-smoke.js | 62 - tests/foundation-asset-audit.ps1 | 37 - tests/foundation-structure-audit.ps1 | 65 - tests/full-page-visual-contract.ps1 | 41 - tests/g-series-app-loading-contract.ps1 | 41 - tests/g-series-openapi-contract.ps1 | 28 - tests/g01-asset-alpha-audit.ps1 | 35 - tests/g01-document-flow-contract.ps1 | 23 - tests/g01-empty-state-contract.ps1 | 125 - tests/g01-empty-state-runtime-smoke.js | 220 -- tests/g01-error-state-contract.ps1 | 26 - tests/g01-genealogy-context-contract.ps1 | 21 - tests/g01-loading-state-contract.ps1 | 20 - tests/g01-my-genealogies-runtime-smoke.js | 254 --- tests/g01-role-shortcut-contract.ps1 | 17 - tests/g01-switch-dialog-runtime-smoke.js | 309 --- tests/g01-visual-contract.ps1 | 252 --- .../g03-ancestor-semantic-fields-contract.ps1 | 9 - tests/g03-bootstrap-client-release-gate.ps1 | 62 - tests/g03-bootstrap-openapi-contract.ps1 | 32 - tests/g03-create-api-runtime-smoke.js | 76 - tests/g03-create-flow-contract.ps1 | 76 - tests/g03-create-flow-runtime-smoke.js | 113 - tests/g03-document-flow-contract.ps1 | 20 - tests/g03-visual-states-contract.ps1 | 19 - tests/g05-all-states-visual-contract.ps1 | 18 - tests/g05-data-ownership-contract.ps1 | 18 - tests/g05-document-flow-contract.ps1 | 40 - tests/g05-overview-api-runtime-smoke.js | 120 - tests/g05-overview-contract.ps1 | 53 - tests/g05-overview-runtime-smoke.js | 132 -- tests/g06-document-flow-contract.ps1 | 42 - tests/g06-g08-context-contract.ps1 | 14 - tests/g06-search-flow-contract.ps1 | 119 - tests/g06-search-flow-runtime-smoke.js | 152 -- tests/g08-document-flow-contract.ps1 | 18 - tests/g08-g10-application-flow-contract.ps1 | 38 - .../g08-g10-application-flow-runtime-smoke.js | 96 - tests/g09-all-states-visual-contract.ps1 | 24 - tests/g09-document-flow-contract.ps1 | 15 - tests/g09-g10-business-state-contract.ps1 | 24 - tests/g10-all-states-visual-contract.ps1 | 48 - tests/g10-document-flow-contract.ps1 | 23 - tests/g11-document-flow-contract.ps1 | 20 - tests/g11-g12-all-states-visual-contract.ps1 | 26 - tests/g11-g12-runtime-navigation-contract.ps1 | 13 - tests/g11-g12-settings-poems-contract.ps1 | 78 - tests/g11-g12-settings-poems-runtime-smoke.js | 178 -- tests/g11-settings-data-contract.ps1 | 15 - tests/g11-settings-openapi-contract.ps1 | 874 ------- tests/g12-document-flow-contract.ps1 | 19 - .../g12-generation-poem-capacity-contract.ps1 | 31 - ...tion-poem-openapi-adversarial-contract.ps1 | 1013 --------- .../g12-generation-poem-openapi-contract.ps1 | 1399 ------------ ...ion-poem-unicode-contract-runtime-smoke.js | 73 - tests/genealogy-context-runtime-smoke.js | 129 -- tests/genealogy-fixture-runtime-smoke.js | 187 -- .../genealogy-shared-background-contract.ps1 | 53 - .../genealogy-workspace-openapi-contract.ps1 | 719 ------ tests/generation-poem-runtime-smoke.js | 254 --- tests/generic-guidance-copy-contract.ps1 | 36 - ...global-heritage-visual-system-contract.ps1 | 71 - tests/global-text-flow-contract.ps1 | 78 - tests/help-center-openapi-contract.ps1 | 51 - tests/interface-page-mapping-contract.ps1 | 320 --- tests/invite-ticket-openapi-contract.ps1 | 625 ----- tests/join-application-openapi-contract.ps1 | 679 ------ tests/lineage-openapi-contract.ps1 | 71 - tests/lineage-write-apifox-contract.ps1 | 130 -- tests/logout-openapi-contract.ps1 | 37 - tests/m-series-all-states-visual-contract.ps1 | 15 - tests/m01-document-flow-contract.ps1 | 11 - tests/m01-module-baseline-contract.ps1 | 62 - tests/m01-service-entry-contract.ps1 | 12 - tests/m07-feedback-state-runtime-smoke.js | 163 -- tests/m07-feedback-submit-contract.ps1 | 49 - tests/manifest-json.ps1 | 11 - tests/md5-bytes-runtime-smoke.js | 24 - tests/member-app-user-visibility-contract.ps1 | 14 - ...ternal-identifiers-visibility-contract.ps1 | 15 - tests/module-app-loading-contract.ps1 | 38 - tests/module-baseline-promotion-contract.ps1 | 27 - tests/module-page-runtime-smoke.js | 68 - .../module-series-responsive-runtime-smoke.js | 103 - tests/mumu-native-route-runtime-smoke.js | 134 -- tests/mumu-page-visual-audit.js | 75 - ...mu-visual-acceptance-boundary-contract.ps1 | 77 - tests/n01-module-baseline-contract.ps1 | 63 - tests/n01-n02-message-flow-contract.ps1 | 26 - tests/native-route-query-contract.ps1 | 29 - tests/navigation-flow-contract.ps1 | 675 ------ tests/navigation-gateway-runtime-smoke.js | 2003 ----------------- tests/navigation-routes-contract.ps1 | 298 --- tests/navigation-source-scan-contract.ps1 | 293 --- tests/night-run.manifest.json | 75 - tests/night-run.ps1 | 182 -- tests/nm-business-runtime-smoke.js | 142 -- tests/nm-page-business-contract.ps1 | 185 -- .../notification-detail-api-runtime-smoke.js | 87 - tests/notification-fixture-runtime-smoke.js | 53 - tests/notification-read-openapi-contract.ps1 | 205 -- ...tification-read-state-openapi-contract.ps1 | 134 -- .../openapi-yaml-json-parity-runtime-smoke.js | 519 ----- tests/oss-id-payload-api-runtime-smoke.js | 103 - tests/page-api-ownership-runtime-smoke.js | 82 - tests/page-openapi-contract.js | 104 - tests/password-change-openapi-contract.ps1 | 37 - tests/password-policy-contract.ps1 | 24 - tests/password-policy-runtime-smoke.js | 19 - tests/phase1-contract.ps1 | 95 - tests/phone-change-openapi-contract.ps1 | 350 --- tests/profile-api-runtime-smoke.js | 111 - tests/profile-openapi-contract.ps1 | 141 -- tests/profile-pages-contract.ps1 | 43 - tests/profile-update-openapi-contract.ps1 | 293 --- tests/project-responsive-layout-contract.ps1 | 71 - tests/r-business-flow-contract.ps1 | 59 - tests/r-business-flow-runtime-smoke.js | 87 - tests/r01-document-flow-contract.ps1 | 33 - tests/r01-module-baseline-contract.ps1 | 24 - tests/r01-r02-person-flow-contract.ps1 | 38 - tests/r02-background-runtime-smoke.js | 63 - tests/r02-person-detail-contract.ps1 | 33 - tests/r02-person-detail-runtime-smoke.js | 146 -- tests/readable-font-contract.ps1 | 28 - tests/records-fixture-runtime-smoke.js | 83 - tests/region-api-runtime-smoke.js | 49 - tests/repository-hygiene-contract.ps1 | 40 - tests/responsive-layout-allowlist.json | 86 - tests/responsive-layout-coverage.json | 69 - tests/resumable-image-upload-runtime-smoke.js | 55 - tests/retired-asset-removal-contract.ps1 | 48 - tests/retired-module-page-contract.ps1 | 41 - tests/root-pages-runtime-smoke.js | 118 - tests/root-pages-visual-contract.ps1 | 21 - tests/runtime-assets-contract.ps1 | 87 - tests/runtime-config-smoke.js | 28 - tests/session-runtime-smoke.js | 88 - ...hared-component-document-flow-contract.ps1 | 71 - ...red-interaction-accessibility-contract.ps1 | 115 - tests/site-content-api-runtime-smoke.js | 51 - tests/t01-all-states-visual-contract.ps1 | 51 - tests/t01-person-action-panel-contract.ps1 | 78 - tests/t01-relation-layout-contract.ps1 | 8 - ...t01-sheet-state-document-flow-contract.ps1 | 8 - tests/t01-tree-api-runtime-smoke.js | 190 -- tests/t01-tree-state-contract.ps1 | 131 -- tests/t01-tree-state-runtime-smoke.js | 178 -- tests/t03-document-flow-contract.ps1 | 17 - tests/t03-member-api-runtime-smoke.js | 244 -- tests/t03-member-remote-contract.ps1 | 42 - tests/t03-t06-all-states-visual-contract.ps1 | 30 - ...3-t08-business-specialization-contract.ps1 | 35 - ...8-business-specialization-runtime-smoke.js | 124 - tests/t03-t08-member-flow-contract.ps1 | 71 - tests/t03-t08-member-flow-runtime-smoke.js | 115 - tests/t04-relative-remote-close-contract.ps1 | 35 - tests/t05-member-remote-close-contract.ps1 | 33 - tests/t06-rank-remote-close-contract.ps1 | 33 - tests/t07-module-baseline-contract.ps1 | 38 - tests/t07-module-baseline-runtime-smoke.js | 166 -- tests/t07-t08-all-states-visual-contract.ps1 | 26 - tests/t07-t08-document-flow-contract.ps1 | 17 - tests/tac-adapter-runtime-smoke.js | 105 - tests/tac-renderjs-runtime-smoke.js | 242 -- tests/tac-shell-accessibility-contract.ps1 | 39 - tests/tree-member-fixture-runtime-smoke.js | 169 -- tests/uni-scss-injection.ps1 | 16 - tests/vue3-entry.ps1 | 11 - 242 files changed, 138 insertions(+), 30996 deletions(-) create mode 100644 scripts/check-project.mjs delete mode 100644 tests/a01-a02-ui-contract.ps1 delete mode 100644 tests/a01-no-photoshop-pipeline-contract.ps1 delete mode 100644 tests/a01-password-login-runtime-smoke.js delete mode 100644 tests/a01-responsive-runtime-smoke.js delete mode 100644 tests/a01-retired-pipeline-removal-contract.ps1 delete mode 100644 tests/a03-route-removal-contract.ps1 delete mode 100644 tests/a04-registration-contract.ps1 delete mode 100644 tests/a04-registration-runtime-smoke.js delete mode 100644 tests/a05-reset-password-contract.ps1 delete mode 100644 tests/a05-reset-password-runtime-smoke.js delete mode 100644 tests/a05-success-asset-contract.ps1 delete mode 100644 tests/a06-auth-status-contract.ps1 delete mode 100644 tests/a06-auth-status-runtime-smoke.js delete mode 100644 tests/active-page-business-ownership-contract.ps1 delete mode 100644 tests/adaptive-frame-profiles-contract.ps1 delete mode 100644 tests/ag-responsive-surfaces-contract.ps1 delete mode 100644 tests/all-page-route-runtime-smoke.js delete mode 100644 tests/app-button-compact-contract.ps1 delete mode 100644 tests/app-dialog-responsive-content-contract.ps1 delete mode 100644 tests/app-loading-contract.ps1 delete mode 100644 tests/auth-accessibility-static-contract.ps1 delete mode 100644 tests/auth-android-accessibility-release-gate.ps1 delete mode 100644 tests/auth-api-runtime-smoke.js delete mode 100644 tests/auth-code-action-visual-contract.ps1 delete mode 100644 tests/auth-page-shell-contract.ps1 delete mode 100644 tests/auth-post-commit-navigation-contract.ps1 delete mode 100644 tests/auth-sms-cooldown-runtime-smoke.js delete mode 100644 tests/auth-tac-integration-contract.ps1 delete mode 100644 tests/auth-tac-openapi-contract.ps1 delete mode 100644 tests/auth-verification-runtime-smoke.js delete mode 100644 tests/ceremony-invitations-api-runtime-smoke.js delete mode 100644 tests/compile-audit.ps1 delete mode 100644 tests/core-flow-contract.ps1 delete mode 100644 tests/current-documentation-contract.ps1 delete mode 100644 tests/current-openapi-inventory-contract.ps1 delete mode 100644 tests/data-driven-layout-contract.ps1 delete mode 100644 tests/data-driven-layout-risk-allowlist.json delete mode 100644 tests/data-driven-layout-runtime-smoke.js delete mode 100644 tests/default-avatar-contract.ps1 delete mode 100644 tests/discard-confirmation-runtime-smoke.js delete mode 100644 tests/document-flow-position-allowlist.json delete mode 100644 tests/document-flow-position-contract.ps1 delete mode 100644 tests/f-business-flow-contract.ps1 delete mode 100644 tests/f-business-flow-runtime-smoke.js delete mode 100644 tests/f-series-all-states-visual-contract.ps1 delete mode 100644 tests/f01-document-flow-contract.ps1 delete mode 100644 tests/f01-module-baseline-contract.ps1 delete mode 100644 tests/f01-product-entry-contract.ps1 delete mode 100644 tests/f02-document-flow-contract.ps1 delete mode 100644 tests/f05-expired-state-contract.ps1 delete mode 100644 tests/f06-article-editor-contract.ps1 delete mode 100644 tests/f06-editor-context-contract.ps1 delete mode 100644 tests/f08-album-assets-contract.ps1 delete mode 100644 tests/f08-album-detail-contract.ps1 delete mode 100644 tests/f08-album-detail-runtime-smoke.js delete mode 100644 tests/f08-f09-album-context-contract.ps1 delete mode 100644 tests/f09-media-upload-contract.ps1 delete mode 100644 tests/f09-media-upload-layout-smoke.js delete mode 100644 tests/f09-media-upload-runtime-smoke.js delete mode 100644 tests/f10-video-status-contract.ps1 delete mode 100644 tests/f10-video-status-runtime-smoke.js delete mode 100644 tests/family-create-api-runtime-smoke.js delete mode 100644 tests/family-create-pages-contract.ps1 delete mode 100644 tests/family-editors-document-flow-contract.ps1 delete mode 100644 tests/family-feed-read-openapi-adversarial-contract.ps1 delete mode 100644 tests/family-feed-read-openapi-contract.ps1 delete mode 100644 tests/family-fixture-runtime-smoke.js delete mode 100644 tests/feedback-api-runtime-smoke.js delete mode 100644 tests/feedback-openapi-contract.ps1 delete mode 100644 tests/file-upload-api-runtime-smoke.js delete mode 100644 tests/fixed-navigation-position-contract.ps1 delete mode 100644 tests/form-enum-api-runtime-smoke.js delete mode 100644 tests/foundation-asset-audit.ps1 delete mode 100644 tests/foundation-structure-audit.ps1 delete mode 100644 tests/full-page-visual-contract.ps1 delete mode 100644 tests/g-series-app-loading-contract.ps1 delete mode 100644 tests/g-series-openapi-contract.ps1 delete mode 100644 tests/g01-asset-alpha-audit.ps1 delete mode 100644 tests/g01-document-flow-contract.ps1 delete mode 100644 tests/g01-empty-state-contract.ps1 delete mode 100644 tests/g01-empty-state-runtime-smoke.js delete mode 100644 tests/g01-error-state-contract.ps1 delete mode 100644 tests/g01-genealogy-context-contract.ps1 delete mode 100644 tests/g01-loading-state-contract.ps1 delete mode 100644 tests/g01-my-genealogies-runtime-smoke.js delete mode 100644 tests/g01-role-shortcut-contract.ps1 delete mode 100644 tests/g01-switch-dialog-runtime-smoke.js delete mode 100644 tests/g01-visual-contract.ps1 delete mode 100644 tests/g03-ancestor-semantic-fields-contract.ps1 delete mode 100644 tests/g03-bootstrap-client-release-gate.ps1 delete mode 100644 tests/g03-bootstrap-openapi-contract.ps1 delete mode 100644 tests/g03-create-api-runtime-smoke.js delete mode 100644 tests/g03-create-flow-contract.ps1 delete mode 100644 tests/g03-create-flow-runtime-smoke.js delete mode 100644 tests/g03-document-flow-contract.ps1 delete mode 100644 tests/g03-visual-states-contract.ps1 delete mode 100644 tests/g05-all-states-visual-contract.ps1 delete mode 100644 tests/g05-data-ownership-contract.ps1 delete mode 100644 tests/g05-document-flow-contract.ps1 delete mode 100644 tests/g05-overview-api-runtime-smoke.js delete mode 100644 tests/g05-overview-contract.ps1 delete mode 100644 tests/g05-overview-runtime-smoke.js delete mode 100644 tests/g06-document-flow-contract.ps1 delete mode 100644 tests/g06-g08-context-contract.ps1 delete mode 100644 tests/g06-search-flow-contract.ps1 delete mode 100644 tests/g06-search-flow-runtime-smoke.js delete mode 100644 tests/g08-document-flow-contract.ps1 delete mode 100644 tests/g08-g10-application-flow-contract.ps1 delete mode 100644 tests/g08-g10-application-flow-runtime-smoke.js delete mode 100644 tests/g09-all-states-visual-contract.ps1 delete mode 100644 tests/g09-document-flow-contract.ps1 delete mode 100644 tests/g09-g10-business-state-contract.ps1 delete mode 100644 tests/g10-all-states-visual-contract.ps1 delete mode 100644 tests/g10-document-flow-contract.ps1 delete mode 100644 tests/g11-document-flow-contract.ps1 delete mode 100644 tests/g11-g12-all-states-visual-contract.ps1 delete mode 100644 tests/g11-g12-runtime-navigation-contract.ps1 delete mode 100644 tests/g11-g12-settings-poems-contract.ps1 delete mode 100644 tests/g11-g12-settings-poems-runtime-smoke.js delete mode 100644 tests/g11-settings-data-contract.ps1 delete mode 100644 tests/g11-settings-openapi-contract.ps1 delete mode 100644 tests/g12-document-flow-contract.ps1 delete mode 100644 tests/g12-generation-poem-capacity-contract.ps1 delete mode 100644 tests/g12-generation-poem-openapi-adversarial-contract.ps1 delete mode 100644 tests/g12-generation-poem-openapi-contract.ps1 delete mode 100644 tests/g12-generation-poem-unicode-contract-runtime-smoke.js delete mode 100644 tests/genealogy-context-runtime-smoke.js delete mode 100644 tests/genealogy-fixture-runtime-smoke.js delete mode 100644 tests/genealogy-shared-background-contract.ps1 delete mode 100644 tests/genealogy-workspace-openapi-contract.ps1 delete mode 100644 tests/generation-poem-runtime-smoke.js delete mode 100644 tests/generic-guidance-copy-contract.ps1 delete mode 100644 tests/global-heritage-visual-system-contract.ps1 delete mode 100644 tests/global-text-flow-contract.ps1 delete mode 100644 tests/help-center-openapi-contract.ps1 delete mode 100644 tests/interface-page-mapping-contract.ps1 delete mode 100644 tests/invite-ticket-openapi-contract.ps1 delete mode 100644 tests/join-application-openapi-contract.ps1 delete mode 100644 tests/lineage-openapi-contract.ps1 delete mode 100644 tests/lineage-write-apifox-contract.ps1 delete mode 100644 tests/logout-openapi-contract.ps1 delete mode 100644 tests/m-series-all-states-visual-contract.ps1 delete mode 100644 tests/m01-document-flow-contract.ps1 delete mode 100644 tests/m01-module-baseline-contract.ps1 delete mode 100644 tests/m01-service-entry-contract.ps1 delete mode 100644 tests/m07-feedback-state-runtime-smoke.js delete mode 100644 tests/m07-feedback-submit-contract.ps1 delete mode 100644 tests/manifest-json.ps1 delete mode 100644 tests/md5-bytes-runtime-smoke.js delete mode 100644 tests/member-app-user-visibility-contract.ps1 delete mode 100644 tests/member-internal-identifiers-visibility-contract.ps1 delete mode 100644 tests/module-app-loading-contract.ps1 delete mode 100644 tests/module-baseline-promotion-contract.ps1 delete mode 100644 tests/module-page-runtime-smoke.js delete mode 100644 tests/module-series-responsive-runtime-smoke.js delete mode 100644 tests/mumu-native-route-runtime-smoke.js delete mode 100644 tests/mumu-page-visual-audit.js delete mode 100644 tests/mumu-visual-acceptance-boundary-contract.ps1 delete mode 100644 tests/n01-module-baseline-contract.ps1 delete mode 100644 tests/n01-n02-message-flow-contract.ps1 delete mode 100644 tests/native-route-query-contract.ps1 delete mode 100644 tests/navigation-flow-contract.ps1 delete mode 100644 tests/navigation-gateway-runtime-smoke.js delete mode 100644 tests/navigation-routes-contract.ps1 delete mode 100644 tests/navigation-source-scan-contract.ps1 delete mode 100644 tests/night-run.manifest.json delete mode 100644 tests/night-run.ps1 delete mode 100644 tests/nm-business-runtime-smoke.js delete mode 100644 tests/nm-page-business-contract.ps1 delete mode 100644 tests/notification-detail-api-runtime-smoke.js delete mode 100644 tests/notification-fixture-runtime-smoke.js delete mode 100644 tests/notification-read-openapi-contract.ps1 delete mode 100644 tests/notification-read-state-openapi-contract.ps1 delete mode 100644 tests/openapi-yaml-json-parity-runtime-smoke.js delete mode 100644 tests/oss-id-payload-api-runtime-smoke.js delete mode 100644 tests/page-api-ownership-runtime-smoke.js delete mode 100644 tests/page-openapi-contract.js delete mode 100644 tests/password-change-openapi-contract.ps1 delete mode 100644 tests/password-policy-contract.ps1 delete mode 100644 tests/password-policy-runtime-smoke.js delete mode 100644 tests/phase1-contract.ps1 delete mode 100644 tests/phone-change-openapi-contract.ps1 delete mode 100644 tests/profile-api-runtime-smoke.js delete mode 100644 tests/profile-openapi-contract.ps1 delete mode 100644 tests/profile-pages-contract.ps1 delete mode 100644 tests/profile-update-openapi-contract.ps1 delete mode 100644 tests/project-responsive-layout-contract.ps1 delete mode 100644 tests/r-business-flow-contract.ps1 delete mode 100644 tests/r-business-flow-runtime-smoke.js delete mode 100644 tests/r01-document-flow-contract.ps1 delete mode 100644 tests/r01-module-baseline-contract.ps1 delete mode 100644 tests/r01-r02-person-flow-contract.ps1 delete mode 100644 tests/r02-background-runtime-smoke.js delete mode 100644 tests/r02-person-detail-contract.ps1 delete mode 100644 tests/r02-person-detail-runtime-smoke.js delete mode 100644 tests/readable-font-contract.ps1 delete mode 100644 tests/records-fixture-runtime-smoke.js delete mode 100644 tests/region-api-runtime-smoke.js delete mode 100644 tests/repository-hygiene-contract.ps1 delete mode 100644 tests/responsive-layout-allowlist.json delete mode 100644 tests/responsive-layout-coverage.json delete mode 100644 tests/resumable-image-upload-runtime-smoke.js delete mode 100644 tests/retired-asset-removal-contract.ps1 delete mode 100644 tests/retired-module-page-contract.ps1 delete mode 100644 tests/root-pages-runtime-smoke.js delete mode 100644 tests/root-pages-visual-contract.ps1 delete mode 100644 tests/runtime-assets-contract.ps1 delete mode 100644 tests/runtime-config-smoke.js delete mode 100644 tests/session-runtime-smoke.js delete mode 100644 tests/shared-component-document-flow-contract.ps1 delete mode 100644 tests/shared-interaction-accessibility-contract.ps1 delete mode 100644 tests/site-content-api-runtime-smoke.js delete mode 100644 tests/t01-all-states-visual-contract.ps1 delete mode 100644 tests/t01-person-action-panel-contract.ps1 delete mode 100644 tests/t01-relation-layout-contract.ps1 delete mode 100644 tests/t01-sheet-state-document-flow-contract.ps1 delete mode 100644 tests/t01-tree-api-runtime-smoke.js delete mode 100644 tests/t01-tree-state-contract.ps1 delete mode 100644 tests/t01-tree-state-runtime-smoke.js delete mode 100644 tests/t03-document-flow-contract.ps1 delete mode 100644 tests/t03-member-api-runtime-smoke.js delete mode 100644 tests/t03-member-remote-contract.ps1 delete mode 100644 tests/t03-t06-all-states-visual-contract.ps1 delete mode 100644 tests/t03-t08-business-specialization-contract.ps1 delete mode 100644 tests/t03-t08-business-specialization-runtime-smoke.js delete mode 100644 tests/t03-t08-member-flow-contract.ps1 delete mode 100644 tests/t03-t08-member-flow-runtime-smoke.js delete mode 100644 tests/t04-relative-remote-close-contract.ps1 delete mode 100644 tests/t05-member-remote-close-contract.ps1 delete mode 100644 tests/t06-rank-remote-close-contract.ps1 delete mode 100644 tests/t07-module-baseline-contract.ps1 delete mode 100644 tests/t07-module-baseline-runtime-smoke.js delete mode 100644 tests/t07-t08-all-states-visual-contract.ps1 delete mode 100644 tests/t07-t08-document-flow-contract.ps1 delete mode 100644 tests/tac-adapter-runtime-smoke.js delete mode 100644 tests/tac-renderjs-runtime-smoke.js delete mode 100644 tests/tac-shell-accessibility-contract.ps1 delete mode 100644 tests/tree-member-fixture-runtime-smoke.js delete mode 100644 tests/uni-scss-injection.ps1 delete mode 100644 tests/vue3-entry.ps1 diff --git a/package.json b/package.json index 2f1a3e2..c59f58b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,11 @@ { "name": "jiapuapp", "private": true, + "scripts": { + "check": "node scripts/check-project.mjs && npm --prefix design-pipeline run check", + "check:project": "node scripts/check-project.mjs", + "check:assets": "node design-pipeline/scripts/validate-runtime-asset-inventory.mjs design-pipeline/manifests/runtime-assets.json" + }, "devDependencies": { "yaml": "^2.8.1" } diff --git a/scripts/check-project.mjs b/scripts/check-project.mjs new file mode 100644 index 0000000..d051aba --- /dev/null +++ b/scripts/check-project.mjs @@ -0,0 +1,133 @@ +import fs from 'node:fs' +import path from 'node:path' + +import YAML from 'yaml' + +const workspace = process.cwd() +const failures = [] + +const fail = (message) => failures.push(message) +const readText = (filePath) => fs.readFileSync(path.join(workspace, filePath), 'utf8') +const listFiles = (entryPaths, extensions) => { + const files = [] + const visit = (entryPath) => { + const absolutePath = path.join(workspace, entryPath) + if (!fs.existsSync(absolutePath)) return + const stat = fs.statSync(absolutePath) + if (stat.isDirectory()) { + for (const name of fs.readdirSync(absolutePath)) { + visit(path.join(entryPath, name)) + } + return + } + if (extensions.has(path.extname(entryPath))) files.push(entryPath) + } + entryPaths.forEach(visit) + return files +} + +const parseJson = (filePath) => { + try { + return JSON.parse(readText(filePath)) + } catch (error) { + fail(`${filePath} 不是有效 JSON:${error.message}`) + return null + } +} + +const pagesConfig = parseJson('pages.json') +parseJson('manifest.json') +parseJson('package.json') +parseJson('package-lock.json') + +const routeSource = readText('utils/navigation/routes.js') +const routeEntries = [...routeSource.matchAll(/^\s{2}([A-Z]\d{2}): defineRoute\(\{[\s\S]*?^\s{2}\}\),/gm)] +const routeKeys = routeEntries.map((match) => match[1]) +const routePaths = routeEntries.map((match) => match[0].match(/path: "([^"]+)"/)?.[1]?.replace(/^\//, '')) +const configuredPages = pagesConfig?.pages?.map((page) => page.path) || [] + +if (new Set(routeKeys).size !== routeKeys.length) fail('路由键存在重复') +if (routePaths.some((routePath) => !routePath)) fail('存在没有静态 path 的路由') +for (const pagePath of configuredPages) { + if (!fs.existsSync(path.join(workspace, `${pagePath}.vue`))) fail(`页面文件缺失:${pagePath}.vue`) + if (!routePaths.includes(pagePath)) fail(`页面没有路由语义:${pagePath}`) +} +for (const routePath of routePaths) { + if (!configuredPages.includes(routePath)) fail(`路由没有在 pages.json 注册:${routePath}`) +} + +const sourceFiles = listFiles( + ['App.vue', 'main.js', 'pages', 'components', 'composables', 'services', 'utils'], + new Set(['.js', '.vue']), +) +const importPattern = /(?:from\s*|import\s*)["']([^"']+)["']/g +for (const filePath of sourceFiles) { + const source = readText(filePath) + if (filePath.endsWith('.vue') && !/<(?:template|script)(?:\s|>)/.test(source)) { + fail(`${filePath} 缺少