diff --git a/tests/browser/smoke.mjs b/tests/browser/smoke.mjs
index 2f78323..68ab5da 100644
--- a/tests/browser/smoke.mjs
+++ b/tests/browser/smoke.mjs
@@ -73,6 +73,10 @@ try {
await page.waitForFunction(
(sentinel) => {
+ // The WebGL renderer draws to a canvas atlas and never puts text in
+ // .xterm-rows, so prefer the shell's buffer-API readout when present;
+ // fall back to DOM scraping for builds without it (DOM renderer).
+ if (window.xsofyTermText) return window.xsofyTermText().includes(sentinel);
const el = document.querySelector('.xterm-rows');
return el && el.textContent.includes(sentinel);
},
diff --git a/tools/xsofy-shell.html b/tools/xsofy-shell.html
index 7aaa8a4..50746a3 100644
--- a/tools/xsofy-shell.html
+++ b/tools/xsofy-shell.html
@@ -8,6 +8,7 @@
+