Fix campaigns rerender after mutations
This commit is contained in:
91
tests/e2e/campaigns-refresh.js
Normal file
91
tests/e2e/campaigns-refresh.js
Normal file
@@ -0,0 +1,91 @@
|
||||
const assert = require("node:assert/strict");
|
||||
const {
|
||||
absoluteUrl,
|
||||
clickByTitle,
|
||||
clickText,
|
||||
fillInput,
|
||||
getValue,
|
||||
registerAndLoginApi,
|
||||
runSmokeTests,
|
||||
seedAuthenticatedBrowser,
|
||||
uniqueName,
|
||||
waitFor,
|
||||
withDriver,
|
||||
waitForSelector,
|
||||
waitForText,
|
||||
waitForUrl
|
||||
} = require("./lib/selenium-smoke");
|
||||
|
||||
const tests = [
|
||||
{
|
||||
name: "campaign management rerenders immediately after campaign and character mutations",
|
||||
run: async () => withDriver({}, async (driver) => {
|
||||
const username = uniqueName("campaign-refresh");
|
||||
const { sessionCookie } = await registerAndLoginApi(username, "Campaign Refresh");
|
||||
const campaignName = uniqueName("campaign");
|
||||
const characterName = uniqueName("character");
|
||||
const updatedCharacterName = uniqueName("character-updated");
|
||||
|
||||
await seedAuthenticatedBrowser(driver, sessionCookie);
|
||||
await driver.get(absoluteUrl("/campaigns"));
|
||||
await waitForUrl(driver, "/campaigns");
|
||||
await waitForText(driver, "Character Management");
|
||||
|
||||
await clickText(driver, "button", "Add campaign", { contains: true });
|
||||
await waitForSelector(driver, "#campaign-name");
|
||||
await fillInput(driver, "#campaign-name", campaignName);
|
||||
await fillInput(driver, "#campaign-ruleset", "d6");
|
||||
await clickText(driver, "button", "Create Campaign");
|
||||
|
||||
await waitFor(
|
||||
driver,
|
||||
() => driver.executeScript(
|
||||
(name) => (document.querySelector("#campaign-select")?.textContent || "").includes(name),
|
||||
campaignName
|
||||
),
|
||||
`Expected campaign ${campaignName} to appear in the campaign selector.`
|
||||
);
|
||||
|
||||
const selectedCampaignId = await getValue(driver, "#campaign-select");
|
||||
assert.ok(selectedCampaignId, "Expected a selected campaign after campaign creation.");
|
||||
|
||||
await clickText(driver, "button", "Add character", { contains: true });
|
||||
await waitForSelector(driver, "#character-create-name");
|
||||
await fillInput(driver, "#character-create-name", characterName);
|
||||
await clickText(driver, "button", "Create Character");
|
||||
|
||||
await waitFor(
|
||||
driver,
|
||||
() => driver.executeScript(
|
||||
(name) => [...document.querySelectorAll(".management-list strong")].some((element) => element.textContent.includes(name)),
|
||||
characterName
|
||||
),
|
||||
`Expected character ${characterName} to appear in the campaign roster.`
|
||||
);
|
||||
|
||||
await clickByTitle(driver, "Edit character");
|
||||
await waitForSelector(driver, "#character-edit-name");
|
||||
await fillInput(driver, "#character-edit-name", updatedCharacterName);
|
||||
await clickText(driver, "button", "Save Character");
|
||||
|
||||
await waitFor(
|
||||
driver,
|
||||
() => driver.executeScript(
|
||||
(nextName, previousName) => {
|
||||
const names = [...document.querySelectorAll(".management-list strong")]
|
||||
.map((element) => element.textContent || "");
|
||||
return names.some((name) => name.includes(nextName)) && names.every((name) => !name.includes(previousName));
|
||||
},
|
||||
updatedCharacterName,
|
||||
characterName
|
||||
),
|
||||
`Expected updated character name ${updatedCharacterName} to appear immediately in the campaign roster.`
|
||||
);
|
||||
})
|
||||
}
|
||||
];
|
||||
|
||||
runSmokeTests(tests).catch((error) => {
|
||||
console.error(error.stack || error);
|
||||
process.exitCode = 1;
|
||||
});
|
||||
Reference in New Issue
Block a user