pathFor: adoptPage trusts a mutable page global and a NUL/replacement-char id can escape-collide
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 65/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Tranquilo
- Stack tecnológico
- playwright, typescript
- Área
- accessibility, testing-qa
Línea de trabajo
Start by locating adoptPage and the path helper, then inspect the duplicate-id fix in #182 and #215. Check how the helper is chosen and how escaped id selectors are validated, including invalid-selector handling. Done means page-defined globals cannot collapse paths and distinct elements with NUL or U+FFFD ids do not share a path; verify with focused tests for both cases.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Follow-up to #182 / #215.
What is wrong
Two residual identity-collision paths remain after the duplicate-id fix:
adoptPageinstalls the path helper only ifwindow.__usablPathForis not already a function. A page that already navigated can define its ownwindow.__usablPathFor = () => '#dup', and adoptPage preserves it, so every element collapses to one identity.- The uniqueness guard checks that the escaped id selector matches exactly one element, not that the match is the element in hand. A NUL id and a literal U+FFFD id both escape to the same selector, so two distinct elements can still collide.
Why it matters
Both reintroduce the set-difference false green the id-collision work closed, for a page that is hostile or has unusual ids.
Fix
Do not trust a mutable page global: evaluate a private path function per query, or install an immutable binding. Before using an id selector, require exactly one match AND matches[0] === element, with invalid-selector handling.
- Lenguaje dominante
- TypeScript
- Estrellas
- 0
- Forks
- 0
- Merge medio
- 2 h 48 min
- PR fusionados (30 d)
- 8
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Sin 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 usabl-dev/usabl
-
area: engine bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 86/100
-
Stop hook allows a stop on an unknown verdict, and the self-check prints IDLE for a null verdictAbiertoarea: assistants bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
-
area: engine bug security
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
-
Overlay: browser context failures are counted per plugin, not per browser, and close is not sharedAbiertoarea: overlay bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 64/100
-
area: engine enhancement performance
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
Todos los issues de usabl-dev/usabl
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
Automattic/data-liberation-agent#953 ·
Los mantenedores suelen responder en 1 día
-
README に GitHub の組織のバッジを足すAbiertodocumentation
Dificultad 1/5 Menos de una hora Aptitud para principiantes 90/100
funmary-app/funmary#399 ·
Los mantenedores suelen responder en 1 día
-
area:curator enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
CassioDalla/Scrinalia#150 ·
Los mantenedores suelen responder en 1 día
-
status: needs-triage v1-bug-bash
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
a2ui-project/a2ui#3533 ·
Los mantenedores suelen responder en 1 día
-
backend enhancement priority:P3
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
geolens-io/geolens#3310 ·
Los mantenedores suelen responder en 1 día