Files
m038 9c2177600c test: switch all test fixtures from japan-korea-2026 to italy-2026-demo
- Replace all japan-korea-2026 URL references in test files
- dailies.spec.js: update KNOWN_SLUG/TITLE/CITY/COUNTRY to first campiglia entry
- accessibility.spec.js: update AX4 entry URL to campiglia entry
- helpers.js: update TRACKER_DIR to italy-2026-demo dailies

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Vgmzx8VTTTmCskSpQtsLTr
2026-06-20 22:00:45 +02:00

66 lines
2.4 KiB
JavaScript

// @ts-check
const path = require('path');
const fs = require('fs');
const TRACKER_DIR = path.join(__dirname, '../../user/pages/01.trips/italy-2026-demo/01.dailies');
/**
* Wait for all filepond items to finish XHR upload.
*/
async function waitForFilePondUpload(page) {
await page.waitForFunction(() => {
const items = document.querySelectorAll('.filepond--item[data-filepond-item-state]');
return items.length > 0 && [...items].every(
el => el.getAttribute('data-filepond-item-state') === 'processing-complete'
);
}, { timeout: 20_000 });
}
/**
* Submit the post form with minimal required fields and return the unique title marker.
* Caller is responsible for cleanup via cleanupEntry().
*/
async function postEntry(page, { titleTag, content = 'Automated test. Safe to delete.', city = '', country = '' } = {}) {
const title = `UI Test ${titleTag} ${Date.now()}`;
await page.goto('/post');
await page.fill('input[name="data[title]"]', title);
await page.fill('textarea[name="data[content]"]', content);
if (city) await page.fill('input[name="data[location_city]"]', city);
if (country) await page.fill('input[name="data[location_country]"]', country);
await page.locator('.btn-post').evaluate(el => el.click());
await page.waitForSelector('.form-messages, .notices', { timeout: 15_000 });
return titleTag;
}
/**
* Find a tracker entry folder by a unique slug fragment, then delete it.
*/
function cleanupEntry(slugFragment) {
if (!slugFragment) return;
const entries = fs.readdirSync(TRACKER_DIR);
const match = entries.find(e => e.includes(slugFragment));
if (match) {
fs.rmSync(path.join(TRACKER_DIR, match), { recursive: true });
}
}
/**
* Find the first entry folder matching a slug fragment and return its full path.
*/
function findEntry(slugFragment) {
const entries = fs.readdirSync(TRACKER_DIR);
const match = entries.find(e => e.includes(slugFragment));
return match ? path.join(TRACKER_DIR, match) : null;
}
/**
* Read the entry .md file (entry.md or entry.en.md) from an entry folder.
*/
function readEntryMd(entryDir) {
const name = ['entry.md', 'entry.en.md'].find(f => fs.existsSync(path.join(entryDir, f)));
if (!name) return null;
return fs.readFileSync(path.join(entryDir, name), 'utf-8');
}
module.exports = { waitForFilePondUpload, postEntry, cleanupEntry, findEntry, readEntryMd, TRACKER_DIR };