Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Data tables are removed as "unlikely candidates" when a class name contains "header" (e.g. Wikipedia's plainrowheaders)

Abierto Apto para principiantes
#1,036 1 comentario 0 reacciones 0 asignados Ver en GitHub

@axchadxs ya está trabajando en esto.

Desde el 26/10/2026.

  • #1038 de @axchadxs — abierto

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
78/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
javascript
Área
web-dev

Línea de trabajo

Empieza con la comprobación de candidatos improbables en _grabArticle y las pruebas existentes sobre la eliminación de candidatos y las tablas. Reproduce el problema con el ejemplo proporcionado y luego verifica que se conserve una tabla con una clase header y marcadores de tabla de datos, mientras que las tablas de diseño sigan recibiendo la limpieza condicional existente.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Summary

A data table whose class contains header is removed whole by the unlikely-candidate pass in _grabArticle, because REGEXPS.unlikelyCandidates matches header anywhere in the class string. Wikipedia uses class="wikitable sortable plainrowheaders" on many award, filmography and discography tables, so those tables disappear from the output.

Elements inside a table are already exempt (!this._hasAncestorTag(node, "table")), but the <table> element itself is not.

Steps to reproduce

Readability 0.6.0 with jsdom 26.1.0 (the same check exists on main at ab4027a8):

import { Readability } from "@mozilla/readability";
import { JSDOM } from "jsdom";

const para = (n) => Array.from({ length: n }, (_, i) =>
  `<p>Paragraph ${i} of the article, long enough to be scored as content, with commas, clauses, and ordinary prose like a real page.</p>`).join("\n");
const table = (cls) => `<table class="${cls}"><caption>Awards</caption>
<tr><th>Award</th><th>Result</th></tr>
<tr><th scope="row">Academy Awards</th><td>Nominated</td></tr>
<tr><th scope="row">Annie Awards</th><td>Won</td></tr></table>`;
const run = (body) => new Readability(
  new JSDOM(`<!doctype html><html><body><article>${body}</article></body></html>`).window.document
).parse().content;

for (const cls of ["wikitable", "wikitable plainrowheaders"]) {
  console.log(cls, "→ table kept:", run(para(5) + table(cls) + para(2)).includes("Annie Awards"));
}

Output:

wikitable → table kept: true
wikitable plainrowheaders → table kept: false

With debug: true the log shows Removing unlikely candidate - wikitable sortable plainrowheaders ….

Real page: https://en.wikipedia.org/wiki/The_Wild_Robot_(film). The "Accolades" table (118 rows) is missing from the output.

Expected

A data table (one with a caption or <th> cells) is kept. In a table, "header" usually refers to the table's own header cells, not to the page header.

Possible fix

Exempt <table> elements from the unlikely-candidate check in the same way their descendants already are, or at least tables that _markDataTables would treat as data tables. Layout tables would still go through _cleanConditionally.

Related: #775 (also Wikipedia tables, different symptom).

Lenguaje dominante
JavaScript
Estrellas
11.5k
Forks
740
Métricas de merge de PR
Sin PR fusionados en 30 d

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de mozilla/readability

Todos los issues de mozilla/readability

Issues similares

Más issues de JavaScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.