test: support public objective journal verification
This commit is contained in:
@@ -54,10 +54,15 @@ const baseUrl =
|
||||
process.env.VERIFY_CAMPAIGN_OBJECTIVE_JOURNAL_URL ??
|
||||
'http://127.0.0.1:41808/heros_web/';
|
||||
const targetUrl = withDebugOptions(baseUrl, renderer);
|
||||
const localSeedUrl = withDebugOptions(
|
||||
'http://127.0.0.1:41808/heros_web/',
|
||||
renderer
|
||||
);
|
||||
const screenshotPath =
|
||||
`dist/verification-campaign-objective-journal-${renderer}-1920x1080.png`;
|
||||
|
||||
let serverProcess;
|
||||
let seedServerProcess;
|
||||
let browser;
|
||||
|
||||
try {
|
||||
@@ -90,13 +95,41 @@ try {
|
||||
}
|
||||
});
|
||||
|
||||
await page.addInitScript(() => window.localStorage.clear());
|
||||
await page.addInitScript(() => {
|
||||
const marker =
|
||||
'heros-web:qa:campaign-objective-journal-storage-cleared';
|
||||
if (window.sessionStorage.getItem(marker) === '1') {
|
||||
return;
|
||||
}
|
||||
window.localStorage.clear();
|
||||
window.sessionStorage.setItem(marker, '1');
|
||||
});
|
||||
await page.goto(targetUrl, {
|
||||
waitUntil: 'domcontentloaded',
|
||||
timeout: 90000
|
||||
});
|
||||
await waitForDebugApi(page);
|
||||
const seeded = await seedFirstVictoryCamp(page);
|
||||
let seeded;
|
||||
if (isLocalUrl(targetUrl)) {
|
||||
seeded = await seedFirstVictoryCamp(page);
|
||||
} else {
|
||||
const seedBridge = await createFirstVictorySeedBridge(
|
||||
browser,
|
||||
localSeedUrl
|
||||
);
|
||||
seedServerProcess = seedBridge.serverProcess;
|
||||
seeded = seedBridge.seeded;
|
||||
await page.evaluate((campaignSaves) => {
|
||||
for (const [key, value] of Object.entries(campaignSaves)) {
|
||||
window.localStorage.setItem(key, value);
|
||||
}
|
||||
}, seedBridge.campaignSaves);
|
||||
await page.reload({
|
||||
waitUntil: 'domcontentloaded',
|
||||
timeout: 90000
|
||||
});
|
||||
await waitForDebugApi(page);
|
||||
}
|
||||
assert.deepEqual(
|
||||
seeded,
|
||||
{
|
||||
@@ -229,6 +262,7 @@ try {
|
||||
} finally {
|
||||
await browser?.close();
|
||||
await stopServerProcess(serverProcess);
|
||||
await stopServerProcess(seedServerProcess);
|
||||
}
|
||||
|
||||
function withDebugOptions(url, requestedRenderer) {
|
||||
@@ -238,6 +272,12 @@ function withDebugOptions(url, requestedRenderer) {
|
||||
return parsed.toString();
|
||||
}
|
||||
|
||||
function isLocalUrl(url) {
|
||||
return ['localhost', '127.0.0.1', '0.0.0.0'].includes(
|
||||
new URL(url).hostname
|
||||
);
|
||||
}
|
||||
|
||||
async function waitForDebugApi(page) {
|
||||
await page.waitForFunction(
|
||||
() =>
|
||||
@@ -303,6 +343,39 @@ async function seedFirstVictoryCamp(page) {
|
||||
}, sourceBattleId);
|
||||
}
|
||||
|
||||
async function createFirstVictorySeedBridge(activeBrowser, seedUrl) {
|
||||
const localServerProcess = await ensureLocalServer(seedUrl);
|
||||
const context = await activeBrowser.newContext(
|
||||
desktopBrowserContextOptions
|
||||
);
|
||||
try {
|
||||
const page = await context.newPage();
|
||||
page.setDefaultTimeout(30000);
|
||||
await page.addInitScript(() => window.localStorage.clear());
|
||||
await page.goto(seedUrl, {
|
||||
waitUntil: 'domcontentloaded',
|
||||
timeout: 90000
|
||||
});
|
||||
await waitForDebugApi(page);
|
||||
const seeded = await seedFirstVictoryCamp(page);
|
||||
const campaignSaves = await readCampaignSaves(page);
|
||||
assert(
|
||||
Object.keys(campaignSaves).length > 0,
|
||||
'Local seed bridge did not create a campaign save.'
|
||||
);
|
||||
return {
|
||||
campaignSaves,
|
||||
seeded,
|
||||
serverProcess: localServerProcess
|
||||
};
|
||||
} catch (error) {
|
||||
await stopServerProcess(localServerProcess);
|
||||
throw error;
|
||||
} finally {
|
||||
await context.close();
|
||||
}
|
||||
}
|
||||
|
||||
async function waitForCampJournalReady(page) {
|
||||
try {
|
||||
await page.waitForFunction(
|
||||
|
||||
Reference in New Issue
Block a user