Files
match/test_geo_final.js

53 lines
1.8 KiB
JavaScript

const { chromium } = require('playwright');
const path = 'C:\\Users\\然然小可爱\\Desktop\\数学乐园\\index.html';
(async () => {
const browser = await chromium.launch({ headless: true });
const page = await browser.newPage({ viewport: { width: 800, height: 900 } });
page.on('pageerror', e => console.log(' ERROR:', e.message));
await page.goto('file:///' + path.replace(/\\/g, '/'));
await page.waitForTimeout(1000);
// Unlock all
await page.evaluate(() => { S.stars = [3,3,3,3]; sv(); renderMap(); });
await page.waitForTimeout(300);
// Navigate via goChap
await page.evaluate(() => goChap(3));
await page.waitForTimeout(500);
const gl = await page.$eval('#cGl', e => e.textContent).catch(() => 'ERR');
console.log('当前段:', gl);
// Walk through KPs
for (let step = 0; step < 7; step++) {
const act = await page.$('.act.show');
if (act) await act.click(); await page.waitForTimeout(500);
const label = await page.$eval('#cGl', e => e.textContent).catch(() => '?');
const svgAnims = await page.evaluate(() => {
const svgs = document.querySelectorAll('#cCo svg');
let n = 0;
svgs.forEach(s => { if (s.innerHTML.includes('animate')) n++; });
return n;
});
console.log((step+1) + '. ' + label + ' SVG动画:' + svgAnims + '个');
}
// Final content check
const body = await page.evaluate(() => document.body.innerHTML);
const checks = [
['展开图滑入', body.includes('展开图演示')],
['角度弧线', body.includes('∠=')],
['钟面8:30', body.includes('8:30')],
['射线延伸', body.includes('x2')],
['中点滑动', body.includes('cx"')],
];
console.log('\n动画内容:');
checks.forEach(c => console.log(' ' + (c[1] ? '✅' : '❌') + ' ' + c[0]));
await browser.close();
})().catch(e => console.log('失败:', e.message));