Release Healer Man 0.1.16

This commit is contained in:
phenom committed 2026-09-05 20:42:38 -04:00
1 parent f49e54f35f
commit b57d2b2839
89 files changed
+6055 -17

No files matched your search

+63
View File
@@ -147,6 +147,69 @@ test("serves the game and authenticated cloud-save API", async () => {
assert.equal(memberSession.players.length, 2);
assert.equal(memberSession.events[0].targetActorId, "boss");
const leftGroup = await fetch(`${origin}/api/online-group/leave`, {
method: "POST",
headers: { Authorization: `Bearer ${auth.token}` },
});
assert.equal(leftGroup.status, 200);
const arenaCharacter = {
id: "web-healer", name: "Mendara", classId: "priest", categoryId: "wow",
specializationId: "priest:discipline", raceId: "human", gender: "female", level: 80,
talentRanks: {}, actionBindings: {}, inventory: [], equipment: {},
};
const arenaSave = await fetch(`${origin}/api/cloud-save`, {
method: "PUT",
headers: { "Content-Type": "application/json", Authorization: `Bearer ${auth.token}` },
body: JSON.stringify({ data: { version: 1, characters: [arenaCharacter] } }),
});
assert.equal(arenaSave.status, 200);
const loadout = await fetch(`${origin}/api/arena/loadouts/1`, {
method: "PUT",
headers: { "Content-Type": "application/json", Authorization: `Bearer ${auth.token}` },
body: JSON.stringify({
characterId: arenaCharacter.id, name: "Discipline PvP", classId: "priest",
specializationId: "priest:discipline", role: "healer", ruleset: "wow",
talents: {}, actions: {}, selected: true,
}),
});
assert.equal(loadout.status, 200);
assert.equal((await loadout.json()).level, 80);
const arenaState = await (await fetch(`${origin}/api/arena/state?characterId=${arenaCharacter.id}`, {
headers: { Authorization: `Bearer ${auth.token}` },
})).json();
assert.equal(arenaState.stages.length, 8);
assert.equal(arenaState.stages.every((stage) => stage.validation.status === "validated"), true);
const socketTicket = await (await fetch(`${origin}/api/arena/socket-ticket`, {
method: "POST",
headers: { Authorization: `Bearer ${auth.token}` },
})).json();
const socket = new WebSocket(`${origin.replace("http:", "ws:")}${socketTicket.path}?ticket=${socketTicket.ticket}`);
const messages = [];
socket.addEventListener("message", (event) => messages.push(JSON.parse(String(event.data))));
await new Promise((resolve, reject) => {
socket.addEventListener("open", resolve, { once: true });
socket.addEventListener("error", reject, { once: true });
});
const arenaQueue = await fetch(`${origin}/api/arena/queue`, {
method: "POST",
headers: { "Content-Type": "application/json", Authorization: `Bearer ${auth.token}` },
body: JSON.stringify({ characterId: arenaCharacter.id, loadoutSlot: 1, bracket: "2v2", mode: "rated-ai", ruleset: "wow" }),
});
assert.equal(arenaQueue.status, 201);
assert.equal((await arenaQueue.json()).status, "ready-check");
const arenaReady = await fetch(`${origin}/api/arena/ready`, {
method: "POST",
headers: { Authorization: `Bearer ${auth.token}` },
});
assert.equal(arenaReady.status, 200);
assert.equal((await arenaReady.json()).status, "matched");
await new Promise((resolve) => setTimeout(resolve, 25));
assert.equal(messages.some((message) => message.type === "connected"), true);
assert.equal(messages.some((message) => message.type === "ready-check"), true);
assert.equal(messages.some((message) => message.type === "match-start"), true);
socket.close();
const gmRegistration = await fetch(`${origin}/api/auth/register`, {
method: "POST",
headers: { "Content-Type": "application/json" },