mirror of
https://github.com/tiennm99/tiennm99bot.git
synced 2026-10-11 03:13:46 +00:00
The beta wish renders an 8-second astrology-themed night sky in toon shading through a perspective action camera: it dollies toward a hero cloud, a comet lights the cloud's rim from behind and bursts through it, the camera chases the comet as its flare builds to a starburst, and the label appears with an S, SS, or SSS rank. It shares the /api/gacha request contract and render slots.
86 lines
2.2 KiB
JavaScript
86 lines
2.2 KiB
JavaScript
import {buildServer} from '../src/server.js';
|
|
|
|
const config = {
|
|
apiToken: 'smoke-token',
|
|
host: '127.0.0.1',
|
|
maxConcurrentRenders: 1,
|
|
maxOptionChars: 40,
|
|
maxOptions: 32,
|
|
port: 0,
|
|
requiresApiToken: true,
|
|
renderTimeoutMs: 30000,
|
|
};
|
|
|
|
const app = await buildServer({config, warmRemotionBundle: true});
|
|
|
|
try {
|
|
const response = await app.inject({
|
|
method: 'POST',
|
|
url: '/api/gif',
|
|
headers: {
|
|
authorization: 'Bearer smoke-token',
|
|
},
|
|
payload: {
|
|
durationMs: 3000,
|
|
fps: 12,
|
|
holdMs: 500,
|
|
options: ['alice', 'bob', 'carol', 'dave'],
|
|
size: 384,
|
|
theme: 'classic',
|
|
winnerIndex: 2,
|
|
},
|
|
});
|
|
|
|
if (response.statusCode !== 200) {
|
|
throw new Error(`Expected 200, got ${response.statusCode}: ${response.body}`);
|
|
}
|
|
|
|
const magic = response.rawPayload.subarray(0, 6).toString();
|
|
if (magic !== 'GIF89a') {
|
|
throw new Error(`Expected GIF89a header, got ${magic}`);
|
|
}
|
|
|
|
if (response.headers['x-wheel-winner-index'] !== '2') {
|
|
throw new Error(`Expected winner index 2, got ${response.headers['x-wheel-winner-index']}`);
|
|
}
|
|
|
|
console.log(`api-smoke: ${response.rawPayload.byteLength} bytes`);
|
|
|
|
const gacha = await app.inject({
|
|
method: 'POST',
|
|
url: '/api/gacha',
|
|
headers: {
|
|
authorization: 'Bearer smoke-token',
|
|
},
|
|
payload: {label: 'Pizza', rarity: 5},
|
|
});
|
|
|
|
if (gacha.statusCode !== 200) {
|
|
throw new Error(`Expected gacha 200, got ${gacha.statusCode}: ${gacha.body}`);
|
|
}
|
|
|
|
const box = gacha.rawPayload.subarray(4, 8).toString();
|
|
if (box !== 'ftyp') {
|
|
throw new Error(`Expected MP4 ftyp box, got ${box}`);
|
|
}
|
|
|
|
console.log(`api-smoke gacha: ${gacha.rawPayload.byteLength} bytes`);
|
|
|
|
const beta = await app.inject({
|
|
method: 'POST',
|
|
url: '/api/gachabeta',
|
|
headers: {
|
|
authorization: 'Bearer smoke-token',
|
|
},
|
|
payload: {label: 'Bún bò', rarity: 5},
|
|
});
|
|
|
|
if (beta.statusCode !== 200 || beta.rawPayload.subarray(4, 8).toString() !== 'ftyp') {
|
|
throw new Error(`Expected gachabeta MP4, got ${beta.statusCode}: ${beta.body.slice(0, 200)}`);
|
|
}
|
|
|
|
console.log(`api-smoke gachabeta: ${beta.rawPayload.byteLength} bytes`);
|
|
} finally {
|
|
await app.close();
|
|
}
|