comparison mrjunejune/test/theme_and_webp_test.js @ 262:0f45474c1b1a

Add cyberpunk JRPG blog browser Show the latest posts in the JRPG preview and render the full blog archive and sanitized post details in the Inspect modal. Co-authored-by: Copilot <[email protected]>
author MrJuneJune <mrjunejune@users.noreply.github.com>
date Thu, 06 Aug 2026 04:08:45 -0700
parents b401627fc49e
children ee04e4e69fed
comparison
equal deleted inserted replaced
261:b401627fc49e 262:0f45474c1b1a
732 true, 732 true,
733 ); 733 );
734 await page.getByRole('button', { 734 await page.getByRole('button', {
735 name: 'Close destination details', 735 name: 'Close destination details',
736 }).click(); 736 }).click();
737 await page.locator('.jrpg-preview-dialog dialog').waitFor({ state: 'hidden' });
738
739 await page.getByRole('button', { name: 'Blogs', exact: true }).click();
740 await page.waitForFunction(() =>
741 document.querySelectorAll('[data-latest-blog]').length === 4
742 );
743 assert.match(
744 await page.locator('[data-work-showcase]').textContent(),
745 /Websocket Demystified/,
746 );
747 assert.match(
748 await page.locator('[data-work-showcase]').textContent(),
749 /Creating Network Library in C/,
750 );
751 await page.locator('[data-latest-blog]').first().click();
752 await page.locator('[data-blog-content] h1').waitFor();
753 assert.equal(
754 await page.locator('[data-blog-content] h1').textContent(),
755 'WebSocket Demystified',
756 );
757 assert.equal(
758 await page.locator('[data-preview-link]').getAttribute('href'),
759 '/blog/websocket-demystified',
760 );
761 assert.equal(
762 await page.locator('[data-blog-content]').evaluate(
763 article => getComputedStyle(article).fontFamily,
764 ),
765 '"Pixel Mplus"',
766 );
767 await page.getByRole('button', {
768 name: 'Close destination details',
769 }).click();
770 await page.locator('.jrpg-preview-dialog dialog').waitFor({ state: 'hidden' });
771
772 await page.getByRole('button', { name: /Inspect/ }).click();
773 await page.waitForFunction(() =>
774 document.querySelectorAll('[data-blog-entry]').length === 9
775 );
776 assert.equal(await page.locator('[data-blog-entry]').count(), 9);
777 await page.locator('[data-blog-entry]').nth(1).click();
778 await page.waitForFunction(() =>
779 document.querySelector('[data-blog-content] h1')?.textContent ===
780 'Creating Network Library in C'
781 );
782 assert.equal(
783 await page.locator('[data-preview-link]').getAttribute('href'),
784 '/blog/my-seobeo-journey',
785 );
786 await page.getByRole('button', {
787 name: 'Close destination details',
788 }).click();
737 789
738 await page.evaluate(() => { 790 await page.evaluate(() => {
739 window.__jrpgStreamEvents = []; 791 window.__jrpgStreamEvents = [];
740 document.querySelector('mjj-jrpg-shell').addEventListener( 792 document.querySelector('mjj-jrpg-shell').addEventListener(
741 'mjj-jrpg-stream-event', 793 'mjj-jrpg-stream-event',
1207 await fetch(`${baseUrl}/sw.js`) 1259 await fetch(`${baseUrl}/sw.js`)
1208 ).text(); 1260 ).text();
1209 for (const source of [home, dogGame, manifest]) { 1261 for (const source of [home, dogGame, manifest]) {
1210 assert.doesNotMatch(source, /\.png(?:["')]|$)/i); 1262 assert.doesNotMatch(source, /\.png(?:["')]|$)/i);
1211 } 1263 }
1212 assert.match(serviceWorker, /v13-turn-resume/); 1264 assert.match(serviceWorker, /v14-blog-browser/);
1213 assert.match( 1265 assert.match(
1214 await ( 1266 await (
1215 await fetch(`${baseUrl}/public/pwa-register.js`) 1267 await fetch(`${baseUrl}/public/pwa-register.js`)
1216 ).text(), 1268 ).text(),
1217 /register\('\/sw\.js', \{ scope: '\/' \}\)/, 1269 /register\('\/sw\.js', \{ scope: '\/' \}\)/,