laatste versie

This commit is contained in:
martijn.diersmann@pm.me
2026-09-26 23:25:04 +02:00
parent 32c7696bda
commit 4bdac1e6e8
9 changed files with 267 additions and 84 deletions
+12 -8
View File
@@ -2,7 +2,7 @@
/*
* Turbo Race - headless test/simulatie
* 1) engine-unit-test (fases, vol, host-token, botsingen, power-ups, ranking)
* 2) integratietest: echte server + 20 websocket-clients + host die de race start
* 2) integratietest: echte server + 19 spelers + host (toeschouwer) die de race start
* Run: node test/simulate.js
*/
const assert = require('assert');
@@ -191,16 +191,20 @@ async function integration() {
const hostC = mkClient();
await new Promise((res, rej) => { hostC.w.once('open', res); hostC.w.once('error', rej); });
hostC.send({ type: 'join', name: 'Boss', color: '#ff3fa4', hostToken: ADMIN });
await hostC.next('joined');
test('host is de 20e speler', () => assert.strictEqual(clients.length + 1, 20));
const hostJoined = await hostC.next('joined');
test('host wordt toeschouwer (telt niet als speler, geen eigen auto)', () => {
assert.strictEqual(hostJoined.host, true);
assert.strictEqual(hostJoined.spectator, true);
assert.strictEqual(hostJoined.id, undefined);
});
const httpHealth = await new Promise((res) => {
http.get(`http://127.0.0.1:${PORT}/healthz`, (r) => {
let b = ''; r.on('data', (d) => b += d); r.on('end', () => res(b));
}).on('error', () => res(''));
});
test('healthz rapporteert 20 spelers', () => {
assert.ok(httpHealth.includes('"players":20'), 'healthz: ' + httpHealth);
test('healthz rapporteert 19 spelers (host telt niet mee)', () => {
assert.ok(httpHealth.includes('"players":19'), 'healthz: ' + httpHealth);
});
// niet-host mag niet kunnen starten (inline, synchrone volgorde)
@@ -243,10 +247,10 @@ async function integration() {
const resultsSeen = await watchSnapshot(hostC, 'results', 26000).catch(() => null);
test('race loopt door naar results-fase', () => assert.ok(resultsSeen, 'geen results-fase gezien'));
if (resultsSeen) {
test('uitslag: 20 gerangschikte spelers', () => {
assert.strictEqual(resultsSeen.players.length, 20);
test('uitslag: 19 gerangschikte spelers', () => {
assert.strictEqual(resultsSeen.players.length, 19);
const ranks = resultsSeen.players.map((p) => p.rank).sort((a, b) => a - b);
assert.deepStrictEqual(ranks, [...Array(20).keys()].map((i) => i + 1));
assert.deepStrictEqual(ranks, [...Array(19).keys()].map((i) => i + 1));
});
test('er is een duidelijke koploper/winnaar', () => {
const first = resultsSeen.players.find((p) => p.rank === 1);