Mercurial
diff hg-web/e2e/app_e2e_test.js @ 225:70de0c80d093 hg-web
[hg-web] Add side-by-side changeset diffs
| author | MrJuneJune <me@mrjunejune.com> |
|---|---|
| date | Sun, 02 Aug 2026 14:41:09 -0700 |
| parents | 3007ef5fc0ed |
| children | c5129452493e |
line wrap: on
line diff
--- a/hg-web/e2e/app_e2e_test.js Sun Aug 02 13:51:11 2026 -0700 +++ b/hg-web/e2e/app_e2e_test.js Sun Aug 02 14:41:09 2026 -0700 @@ -74,6 +74,10 @@ fs.writeFileSync(path.join(root, 'docs', 'README.md'), '# Documentation\n\nNested README.\n'); fs.writeFileSync(path.join(root, 'src', 'main.c'), 'int main(void) { return 0; }\n'); fs.writeFileSync( + path.join(root, 'BUILD'), + 'cc_library(\n name = "fixture",\n srcs = ["src/main.c"],\n)\n', + ); + fs.writeFileSync( path.join(root, 'pixel.png'), Buffer.from( 'iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAusB9Wl2nWQAAAAASUVORK5CYII=', @@ -88,7 +92,10 @@ run('hg', ['--repository', root, 'commit', '-u', 'Test User <[email protected]>', '-m', 'Initial fixture'], options); const firstNode = run('hg', ['--repository', root, 'log', '-r', '.', '-T', '{node}'], options); - fs.appendFileSync(path.join(root, 'README.md'), '\nSecond revision.\n'); + fs.writeFileSync( + path.join(root, 'README.md'), + '# Updated Fixture Repository\n\n<script>window.__hgWebXss = true</script>\n\nSecond revision.\n', + ); fs.writeFileSync(path.join(root, 'new-file.txt'), 'new file\n'); run('hg', ['add', 'new-file.txt'], { ...options, cwd: root }); run('hg', ['--repository', root, 'commit', '-u', 'Test User <[email protected]>', '-m', 'Update fixture'], options); @@ -282,7 +289,7 @@ await assertPageHasNoBrowserErrors(browser, '/directory', async page => { await page.getByText('Repository Files').waitFor(); await page.getByRole('link', { name: 'README.md' }).first().click(); - await page.getByText('Fixture Repository').waitFor(); + await page.getByText('Updated Fixture Repository').waitFor(); assert.equal(await page.evaluate(() => window.__hgWebXss), undefined); await page.keyboard.press('Escape'); @@ -305,7 +312,7 @@ }), ]); await page.getByRole('link', { name: 'root' }).click(); - await page.getByText('Fixture Repository').waitFor(); + await page.getByText('Updated Fixture Repository').waitFor(); await page.waitForTimeout(600); assert.equal(await page.getByText('Documentation').count(), 0); assert.equal(delayedReadmeRequested, true); @@ -325,6 +332,13 @@ await page.getByRole('dialog', { name: 'Preview pixel.png' }).waitFor(); await page.keyboard.press('Escape'); + await page.getByRole('link', { name: 'BUILD' }).click(); + const buildCode = page.locator('code.language-python'); + await buildCode.waitFor(); + await page.getByText('cc_library').waitFor(); + assert.match(await buildCode.textContent(), /name = "fixture"/); + await page.keyboard.press('Escape'); + await page.getByRole('link', { name: 'src' }).click(); await page.getByRole('link', { name: 'main.c' }).click(); await page.getByText('int main(void)').waitFor(); @@ -355,6 +369,14 @@ await page.locator('.changeset-files code').filter({ hasText: 'new-file.txt' }).waitFor(); await page.getByText('added', { exact: true }).waitFor(); await page.getByRole('region', { name: 'Changeset diff' }).waitFor(); + await page.locator('.diff-column-headings').getByText('Before').first().waitFor(); + await page.locator('.diff-column-headings').getByText('After').first().waitFor(); + await page.locator('.diff-left.diff-remove').filter({ hasText: '# Fixture Repository' }).waitFor(); + await page.locator('.diff-right.diff-add').filter({ hasText: '# Updated Fixture Repository' }).waitFor(); + assert.equal( + await page.locator('.diff-left.diff-context').filter({ hasText: '<script>' }).first().textContent(), + '<script>window.__hgWebXss = true</script>', + ); assert.equal( await page.locator('.changeset-paper').evaluate( element => getComputedStyle(element).backgroundImage,