fix(media-player): el skin de audio SÍ se puede medir — y sale a cero

Corrección de una nota que escribí mal hace un commit. Dije que `audio-player`
no tenía demo porque `/uix/components/audio-player` da 404. El autor lo corrigió:
**la demo es la de `media-player`**, y el chip `media` conmuta a audio — ahí
entra `<AudioPlayer variant>` sobre las mismas partes. El 404 es correcto; lo
que estaba mal era mi lectura de él.

Que la sonda encontrara 0 nodos no significaba «sin demo»: significaba que
cargaba en modo VÍDEO. Y una comparación de 0 valores pasa siempre, así que ese
«0 diffs» no valía nada — la clase de guard que este eje ya tiene anotada.

`scripts/__probe-audio-skin.ts` pulsa el chip y recorre las cuatro variantes
(card · row · bar · inline). Medido contra el commit anterior, revirtiendo los
cuatro ficheros a HEAD~1 y restaurándolos: **1.008 valores, 0 diffs, 0 nodos
ausentes**. El skin lee los públicos nuevos y pinta exactamente igual.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
alpha-0.1-background
dev 2 months ago
parent b7a4cef08f
commit 00cc9d76cf

@ -0,0 +1,49 @@
/**
* Sonda del SKIN de audio. La demo de media-player conmuta con el chip
* `audio` (prop `media`), y ahí entra `audio-player.css` sobre las MISMAS
* partes — por eso una sonda que sólo carga la página mide el modo vídeo y
* deja el skin sin medir. Recorre además las cuatro variantes.
*/
import { writeFileSync } from 'node:fs';
import { chromium } from 'playwright';
const [out, url = 'http://localhost:5180/uix/components/media-player'] = process.argv.slice(2);
const PROPS = ['backgroundColor', 'backgroundImage', 'color', 'paddingTop', 'paddingLeft', 'rowGap', 'columnGap', 'fontSize', 'lineHeight', 'blockSize', 'inlineSize', 'borderTopColor', 'borderTopWidth', 'borderTopLeftRadius'];
const browser = await chromium.launch();
const page = await browser.newPage({ viewport: { width: 1440, height: 1000 } });
await page.goto(url, { waitUntil: 'networkidle' });
await page.waitForTimeout(500);
await page.getByText('audio', { exact: true }).first().click();
await page.waitForTimeout(300);
const snapshot = async (label: string) =>
page.evaluate(
([keys, tag]) => {
const root = document.querySelector('[data-uix-stage]') ?? document.body;
const nodes = [...root.querySelectorAll<HTMLElement>('*')].filter((n) =>
[...n.attributes].some((a) => a.name.startsWith('data-media-player'))
);
const rows: Record<string, Record<string, string>> = {};
nodes.forEach((n, i) => {
const cs = getComputedStyle(n);
const key = `${tag}:${i}:${[...n.attributes].map((a) => a.name).join('|')}`;
rows[key] = Object.fromEntries((keys as string[]).map((k) => [k, cs[k as never] as string]));
});
return rows;
},
[PROPS, label] as const
);
const all: Record<string, unknown> = {};
for (const variant of ['card', 'row', 'bar', 'inline']) {
const chip = page.getByText(variant, { exact: true }).first();
if (await chip.count()) {
await chip.click();
await page.waitForTimeout(200);
}
all[variant] = await snapshot(variant);
console.log(` ${variant}: ${Object.keys(all[variant] as object).length} nodos`);
}
writeFileSync(out, JSON.stringify(all, null, '\t'));
await browser.close();

@ -135,10 +135,13 @@ retirar los privados se migró también su receta.
`R-5.1 exception: width/height: 100%` (media y póster llenan el marco) e
`inline-size: max-content` en los paneles portalados — mecánica de layout.
**Nota de verificación**: `audio-player` **no tiene página de demo** (la ruta da
404), así que su skin no se puede medir con la sonda. Se verificó estampando
`data-variant` sobre el player vivo: el padding pasó a `6px 12px`, exactamente
los tokens. Es un hueco de demo, no de tokens.
**Cómo se mide el skin de audio**: no tiene ruta propia — `/uix/components/audio-player`
da 404 a propósito, porque **la demo es la de `media-player`** y el chip `media`
conmuta a audio, que es cuando entra `<AudioPlayer variant>`. Una sonda que sólo
carga la página mide el modo VÍDEO y deja el skin sin tocar; por eso existe
`scripts/__probe-audio-skin.ts`, que pulsa el chip y recorre las cuatro
variantes (card · row · bar · inline). Medido así el 2026-08-20: **1.008 valores
en las cuatro variantes, 0 diffs** contra el commit anterior.
## Gaps

Loading…
Cancel
Save

Powered by TurnKey Linux.