[Bug]: Firefox never reports domcontentloaded for a document produced by an XSL transform
Los mantenedores suelen responder en 1 día
@dcrousso ya está trabajando en esto.
Desde el 26/8/2026.
Evaluación
Este issue todavía no se ha evaluado.
Descripción
Version
1.62.1
Steps to reproduce
Serve an XML document that references an XSL stylesheet, then navigate to it with waitUntil: 'domcontentloaded'.
import http from 'node:http';
import { chromium, firefox } from 'playwright';
const xsl = `<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/"><html><body><h1>transformed</h1></body></html></xsl:template>
</xsl:stylesheet>`;
const xml = `<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/style.xsl"?>
<root><item>hello</item></root>`;
const server = http.createServer((req, res) => {
const [type, body] = req.url.startsWith('/style.xsl') ? ['text/xsl', xsl] : ['application/xml', xml];
res.writeHead(200, { 'content-type': type });
res.end(body);
});
await new Promise((resolve) => server.listen(0, resolve));
const url = `http://127.0.0.1:${server.address().port}/doc.xml`;
for (const [name, browserType] of Object.entries({ firefox, chromium })) {
const browser = await browserType.launch();
const page = await browser.newPage();
console.log(`\n${name} ${browser.version()}`);
for (const waitUntil of ['domcontentloaded', 'load']) {
const started = Date.now();
try {
await page.goto(url, { waitUntil, timeout: 5000 });
console.log(` goto '${waitUntil}' -> resolved in ${Date.now() - started}ms`);
} catch (error) {
console.log(` goto '${waitUntil}' -> ${error.message.split('\n')[0]}`);
}
}
console.log(` document.readyState: ${await page.evaluate(() => document.readyState)}`);
try {
await page.waitForLoadState('domcontentloaded', { timeout: 5000 });
console.log(' waitForLoadState(domcontentloaded) on the loaded page -> resolved');
} catch (error) {
console.log(` waitForLoadState(domcontentloaded) on the loaded page -> ${error.message.split('\n')[0]}`);
}
await browser.close();
}
server.close();
Expected behavior
goto with waitUntil: 'domcontentloaded' resolves, as it does in Chromium and as waitUntil: 'load' does in Firefox. load cannot fire before DOMContentLoaded, so once the document is loaded, waiting for the earlier event should never block.
Actual behavior
In Firefox the event is never reported for the transform output, so both goto and waitForLoadState hit their timeout while the document is fully loaded (readyState: 'complete', transformed DOM in place). Retrying and using a fresh browser context change nothing. Chromium is fine.
Any XSL-styled XML page reproduces it, not just the local server above, e.g. https://yoast.com/sitemap_index.xml.
Additional context
No response
Environment
System:
OS: macOS 26.2
CPU: (14) arm64 Apple M4 Pro
Memory: 237.63 MB / 24.00 GB
Binaries:
Node: 24.15.0 - /Users/.../.nvm/versions/node/v24.15.0/bin/node
npm: 11.12.1 - /Users/.../.nvm/versions/node/v24.15.0/bin/npm
pnpm: 11.15.1 - /opt/homebrew/bin/pnpm
IDEs:
Cursor: 3.15.6 - /usr/local/bin/cursor
Claude Code: 2.1.169 - /Users/.../.local/bin/claude
Languages:
Bash: 3.2.57 - /bin/bash
npmPackages:
@playwright/browser-chromium: 1.62.1 => 1.62.1
@playwright/browser-firefox: 1.62.1 => 1.62.1
playwright: 1.62.1 => 1.62.1
- Lenguaje dominante
- TypeScript
- Estrellas
- 97.4k
- Forks
- 6.6k
- Merge medio
- 18 h 53 min
- PR fusionados (30 d)
- 307
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de microsoft/playwright
-
[Feature]: Set `this.name` in `TargetClosedError` constructorQuizá libre de nuevo @LeonxLJX la tomó hace 42 días y no hay ningún pull request abierto. AbiertoP3-collecting-feedback
Dificultad 1/5 Menos de una hora Aptitud para principiantes 86/100
microsoft/playwright#42522 · 7 comentarios ·
Los mantenedores suelen responder en 1 día
-
[Bug]: mouse movement deltas is 0 in mouse events in webkitPosiblemente ocupada @yury-s la tomó hace 1 día. Abiertobrowser-webkit v1.65
microsoft/playwright#43417 · 1 comentario · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
[Bug]: WebKit (WPE) web process aborts at exit in PlatformDisplay::sharedDisplay() since 1.64 (webkit-2370)Posiblemente ocupada @yury-s la tomó hace 1 día. Abiertobrowser-webkit v1.65
microsoft/playwright#43394 · 2 comentarios · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
Chromium 149 headless shell crashes in service-worker DevTools resource loading during context teardownPosiblemente ocupada @yury-s la tomó hace 2 días. Abiertobrowser-chromium upstream v1.65
microsoft/playwright#43374 · 2 comentarios · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
[Feature]: Allow `retryStrategy: 'isolated'` in test.describe.configure() for tests requiring zero background workersPosiblemente ocupada @yury-s la tomó hoy. Abierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 22/100
microsoft/playwright#43351 · 7 comentarios ·
Los mantenedores suelen responder en 1 día
Todos los issues de microsoft/playwright
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
Los mantenedores suelen responder en 1 día
-
bug category:ai category:devices effort:s
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
LanternOps/breeze#8943 ·
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
-
area:reliability difficulty:easy help wanted points:100 Stellar Wave
Dificultad 2/5 1-3 horas Aptitud para principiantes 80/100
Divinity-Labs/Lens#341 · 1 comentario ·
Los mantenedores suelen responder en 1 día