Skip to content

fix(ui-library): render table dividers with separate borders for Firefox#23387

Open
FAMarfuaty wants to merge 1 commit into
feature/bulk-editorfrom
1293-free-fe-fix-firefox-row-separator-cut-off-in-bulk-editor-inline-edit-mode
Open

fix(ui-library): render table dividers with separate borders for Firefox#23387
FAMarfuaty wants to merge 1 commit into
feature/bulk-editorfrom
1293-free-fe-fix-firefox-row-separator-cut-off-in-bulk-editor-inline-edit-mode

Conversation

@FAMarfuaty

Copy link
Copy Markdown
Contributor

Context

In Firefox only, when a bulk-editor row entered inline-edit mode (text is replaced by Textarea inputs, growing the cells), the horizontal separator line at the top of the editing row was cut off / missing. Chrome and Safari rendered it correctly. The ui-library Table (.yst-table--default) inherited border-collapse: collapse from the root preflight and placed the row dividers on the <tr> via Tailwind divide-y; Firefox drops a collapsed border along the tall edge of a cell when an adjacent cell is much shorter, so the divider disappeared next to the grown edit cell.

Tracks Yoast/reserved-tasks#1293 (part of Bulk editor — Frontend).

Summary

This PR can be summarized in the following changelog entry:

  • [@yoast/ui-library] Fixes a bug where a table's row separator was not rendered next to a taller cell in Firefox.

Relevant technical choices:

  • The issue's proposed fix (keep border-collapse: collapse, move the dividers from the <tr> onto the cells) does not work: Firefox's bug is in collapsed-border resolution, so a cell-side border is still dropped. Measured in real Firefox, divider coverage above the tall cells stayed at 0%. Switching .yst-table--default to border-collapse: separate; border-spacing: 0 makes each cell paint its own border independently, which Firefox renders reliably (coverage 100%, including above the tall cells). Because row and row-group borders are ignored in separate mode, the thead/tbody line moves onto the header cells (border-b) and the row dividers onto the body cells (border-t).
  • Promoted into @yoast/ui-library rather than scoping to the bulk-editor page, so the same Firefox quirk is fixed for every default-variant table. Blast radius is limited to default-variant tables; minimal-variant tables are untouched.

Test instructions

Test instructions for the acceptance test before the PR gets merged

This PR can be acceptance tested by following these steps:

  • Use Firefox (the bug only appears there). Cache-bust if needed: the bulk-editor stylesheet carries a static version, so do a hard refresh (Cmd/Ctrl+Shift+R) after the rebuilt CSS is deployed.
  • Go to Yoast SEO → Bulk editor.
  • Click Edit on a row that is not the first row, so it has a row above it.
  • Confirm the horizontal separator line at the top of the editing row is present and spans the full width — including above the taller input cells. Before this fix it was cut off / missing in Firefox.
  • Confirm the rest of the table looks unchanged: single (not doubled) row separators, header separator present, rounded corners intact.

Relevant test scenarios

  • Changes should be tested with the browser console open
  • Changes should be tested on different posts/pages/taxonomies/custom post types/custom taxonomies
  • Changes should be tested on different editors (Default Block/Gutenberg/Classic/Elementor/other)
  • Changes should be tested on different browsers
  • Changes should be tested on multisite

This is a Firefox-specific rendering fix, so verify in Firefox primarily, and confirm no regression in Chrome and Safari (single dividers, correct corners). It also touches the shared Table component, so spot-check other default-variant tables: the Dashboard task list and Settings → RSS.

Test instructions for QA when the code is in the RC

  • QA should use the same steps as above.

QA can test this PR by following these steps:

  • Same steps as above.

Impact check

This PR affects the following parts of the plugin, which may require extra testing:

  • The shared @yoast/ui-library Table component (default variant). Every default-variant table is affected: the bulk editor table, the Dashboard task list, Settings → RSS, and the related-keyphrase-suggestions table. minimal-variant tables (Free redirects, Dashboard widget) are not affected.

Other environments

  • This PR also affects Shopify. I have added a changelog entry starting with [shopify-seo], added test instructions for Shopify and attached the Shopify label to this PR.
  • This PR also affects Yoast SEO for Google Docs. I have added a changelog entry starting with [yoast-doc-extension], added test instructions for Yoast SEO for Google Docs and attached the Google Docs Add-on label to this PR.

Documentation

  • I have written documentation for this change. For example, comments in the Relevant technical choices, comments in the code, documentation on Confluence / shared Google Drive / Yoast developer portal, or other.

Quality assurance

  • I have tested this code to the best of my abilities.
  • During testing, I had activated all plugins that Yoast SEO provides integrations for.
  • I have added unit tests to verify the code works as intended.
  • If any part of the code is behind a feature flag, my test instructions also cover cases where the feature flag is switched off.
  • I have written this PR in accordance with my team's definition of done.
  • I have checked that the base branch is correctly set.
  • I have run grunt build:images and committed the results, if my PR introduces or edits images or SVGs.

Innovation

  • No innovation project is applicable for this PR.
  • This PR falls under an innovation project. I have attached the innovation label.
  • I have added my hours to the WBSO document.

Fixes Yoast/reserved-tasks#1293

🤖 Generated with Claude Code

Firefox drops a collapsed row divider along a tall cell's edge when its
neighbour is much shorter, so the separator above a grown bulk-editor
inline-edit row disappeared. Switch the default-variant table to
border-collapse: separate with per-cell borders so each divider paints
independently and Firefox renders it reliably.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@FAMarfuaty FAMarfuaty requested a review from a team as a code owner June 22, 2026 13:39
@FAMarfuaty FAMarfuaty added the changelog: bugfix Needs to be included in the 'Bugfixes' category in the changelog label Jun 22, 2026
@coveralls

Copy link
Copy Markdown

Coverage Report for CI Build 6

Coverage increased (+2.6%) to 60.525%

Details

  • Coverage increased (+2.6%) from the base build.
  • Patch coverage: No coverable lines changed in this PR.
  • No coverage regressions found.

Uncovered Changes

No uncovered changes found.

Coverage Regressions

No coverage regressions found.


Coverage Stats

Coverage Status
Relevant Lines: 12270
Covered Lines: 7532
Line Coverage: 61.39%
Relevant Branches: 8072
Covered Branches: 4780
Branch Coverage: 59.22%
Branches in Coverage %: Yes
Coverage Strength: 245242.46 hits per line

💛 - Coveralls

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

changelog: bugfix Needs to be included in the 'Bugfixes' category in the changelog

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants