Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

Choice-role buttons with submit-like labels turn product containers into pseudo-forms

Aperta Adatta ai principianti
#3,090 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
78/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
php
Ambito
backend

Direzione di ricerca

Inizia leggendo FormControlClassifier::isPseudoFormSubmitControl() e le protezioni esistenti per la semantica di invio, compresa html-inline-button-in-paragraph-submit-semantics-fallback. Aggiungi la pagina ridotta come fixture neutra di regressione e verifica che non produca alcuna segnalazione relativa a un modulo, mentre le fixture esistenti per moduli reali e pseudo-moduli continuano a passare. Il lavoro è completo quando i controlli ARIA con ruolo di scelta non contano più come prova di invio di un pseudo-modulo.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Observed failure

A real product-page import fails in Static Site Importer with static_site_importer_runtime_binding_claim_conflict ("Provider entity bindings claim overlapping canonical source-page ranges"). Blocks Engine classifies the whole product container as a pseudo-form, so its form binding covers the product's own commerce_controls (Add to Cart) binding.

Seen with Data Liberation Agent 0.32.10, Static Site Importer 1.33.42, and its bundled Blocks Engine.

Root cause

FormControlClassifier::isPseudoFormSubmitControl() falls back to hasSubmitSemantics() (text and attribute heuristics) for <button type="button">. A purchase-mode option, <button type="button" role="radio">Subscribe &amp; Save</button>, matches subscribe and counts as a submit. Combined with a labelled checkbox elsewhere in the container, PseudoFormAnalyzer::pairsDataEntryWithSubmit() accepts the surrounding content container as the "tightest coherent" pseudo-form.

A control that declares an ARIA choice role (radio, checkbox, switch, option, tab, menuitemradio, menuitemcheckbox) selects state. It does not submit, whatever its label says.

Reduced reproduction

<main><div class="container">
<h1>Blue Widget</h1>
<p class="price">$29.00</p>
<div class="buy-modes" role="radiogroup">
<button type="button" role="radio" aria-checked="true" class="buy-mode active">One-time purchase</button>
<button type="button" role="radio" aria-checked="false" class="buy-mode">Subscribe &amp; Save</button>
</div>
<button class="add">Add to Cart</button>
<section class="extra"><label><input type="checkbox"> Gift wrap $5.00</label></section>
</div></main>
  • With "Subscribe & Save": html_form_fallback on main:nth-of-type(1) > div:nth-of-type(1), so the page fails quality validation as unsupported_html_fallback.
  • With the same option renamed "Monthly delivery": the import is clean with no form finding.

Acceptance

  • A control with an ARIA choice role is not pseudo-form submit evidence.
  • The reduced page above is a neutral regression fixture. It fails before the fix and emits no form finding after it.
  • Existing submit-semantics guards still hold, for example html-inline-button-in-paragraph-submit-semantics-fallback and the real and pseudo-form fixtures.

AI assistance

Claude (Anthropic) running in the Pi coding agent via Roadie reproduced the failure, reduced it, and identified the root cause. Chris Huber reviewed it.

Lingua principale
PHP
Stelle
21
Fork
2
Merge medio
8h 50m
PR unite (30g)
609

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di Automattic/blocks-engine

Tutte le issue di Automattic/blocks-engine

Issue simili

Altre issue su PHP

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.