Add tests for DOCTYPE system identifier empty vs missing distinction#57077
Merged
zcorpan merged 1 commit intoweb-platform-tests:masterfrom Jan 14, 2026
Merged
Conversation
This adds tests to verify that an empty DOCTYPE system identifier is treated the same as a missing one for quirks mode determination, aligning with Chromium and WebKit behavior. Tests: - Frameset/Transitional + empty system ID → quirks mode - Frameset/Transitional + missing system ID → quirks mode - Frameset/Transitional + non-empty system ID → limited-quirks mode See whatwg/html#12023
zcorpan
approved these changes
Jan 9, 2026
Member
zcorpan
left a comment
There was a problem hiding this comment.
Looks good, but the spec should be changed before landing.
annevk
added a commit
to whatwg/html
that referenced
this pull request
Jan 14, 2026
…YPEs In particular for DOCTYPE system and public identifiers when it comes to quirks mode determination to align with Chromium and WebKit which had a quirk (harhar) in their implementation. This does not remove the distinction entirely as it's still used for validation. Tests: web-platform-tests/wpt#57077. Fixes #12023.
6 tasks
zcorpan
pushed a commit
to whatwg/html
that referenced
this pull request
Jan 14, 2026
…YPEs In particular for DOCTYPE system and public identifiers when it comes to quirks mode determination to align with Chromium and WebKit which had a quirk (harhar) in their implementation. This does not remove the distinction entirely as it's still used for validation. Tests: web-platform-tests/wpt#57077. Fixes #12023.
janewman
pushed a commit
to janewman/html
that referenced
this pull request
Mar 31, 2026
…YPEs In particular for DOCTYPE system and public identifiers when it comes to quirks mode determination to align with Chromium and WebKit which had a quirk (harhar) in their implementation. This does not remove the distinction entirely as it's still used for validation. Tests: web-platform-tests/wpt#57077. Fixes whatwg#12023.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR adds tests to verify the behavior of DOCTYPE system identifier handling for quirks mode determination.
Related Issue
Summary
The HTML spec currently distinguishes between a missing system identifier and an empty string (
"") system identifier. However, Chromium and WebKit treat both cases identically (as quirks mode triggers).Test Cases
compatMode-//W3C//DTD HTML 4.01 Frameset//""(empty)BackCompat-//W3C//DTD HTML 4.01 Frameset//BackCompat-//W3C//DTD HTML 4.01 Frameset//CSS1Compat-//W3C//DTD HTML 4.01 Transitional//""(empty)BackCompat-//W3C//DTD HTML 4.01 Transitional//BackCompat-//W3C//DTD HTML 4.01 Transitional//CSS1CompatExpected Results
Test Results Screenshots
Chrome
Safari
Firefox
Files Added
html/syntax/parsing/doctype-system-identifier-distinction.html- Main test filehtml/syntax/parsing/support/doctype-system-id-empty-frameset.htmlhtml/syntax/parsing/support/doctype-system-id-empty-transitional.htmlhtml/syntax/parsing/support/doctype-system-id-missing-frameset.htmlhtml/syntax/parsing/support/doctype-system-id-missing-transitional.htmlhtml/syntax/parsing/support/doctype-system-id-nonempty-frameset.htmlhtml/syntax/parsing/support/doctype-system-id-nonempty-transitional.html