39 lines
1.3 KiB
JavaScript
39 lines
1.3 KiB
JavaScript
const assert = require("assert");
|
|
const fs = require("fs");
|
|
const path = require("path");
|
|
|
|
const projectRoot = path.join(__dirname, "..");
|
|
const appConfig = JSON.parse(fs.readFileSync(path.join(projectRoot, "app.json"), "utf8"));
|
|
const projectConfig = JSON.parse(
|
|
fs.readFileSync(path.join(projectRoot, "project.config.json"), "utf8")
|
|
);
|
|
|
|
assert.strictEqual(projectConfig.compileType, "miniprogram");
|
|
assert.ok(Array.isArray(appConfig.pages) && appConfig.pages.length > 0);
|
|
assert.strictEqual(new Set(appConfig.pages).size, appConfig.pages.length, "app pages must be unique");
|
|
|
|
appConfig.pages.forEach((pagePath) => {
|
|
["js", "json", "wxml", "wxss"].forEach((extension) => {
|
|
const file = path.join(projectRoot, `${pagePath}.${extension}`);
|
|
assert.ok(fs.existsSync(file), `missing page file: ${pagePath}.${extension}`);
|
|
});
|
|
});
|
|
|
|
[
|
|
"README.md",
|
|
"docs/PRD.md",
|
|
"docs/TECHNICAL_DESIGN.md",
|
|
"docs/ONE_WEEK_MVP_PLAN.md",
|
|
"docs/DEVICE_TEST_CHECKLIST.md",
|
|
"docs/DEMO_GUIDE.md",
|
|
"docs/TEST_REPORT.md",
|
|
"docs/RELEASE_NOTES.md"
|
|
].forEach((relativePath) => {
|
|
assert.ok(fs.existsSync(path.join(projectRoot, relativePath)), `missing deliverable: ${relativePath}`);
|
|
});
|
|
|
|
const appSource = fs.readFileSync(path.join(projectRoot, "app.js"), "utf8");
|
|
assert.match(appSource, /version:\s*"0\.1\.0-mvp"/);
|
|
|
|
console.log("release readiness tests passed");
|