docx-platform-tests results

Cross-implementation conformance results for WordprocessingML (.docx), in the web-platform-tests tradition. Each scenario asserts behavior derivable from the cited ECMA-376 clause — not from any one library — and runs unchanged against every registered adapter. Unsupported means the adapter declined the operation honestly (the NOTRUN analog): a gap in the matrix is information about the library, not a failure of the suite. Pass (divergent serialization) means every assertion derived from the cited clause passed, but the saved document did not match the reference serialization's canonical XML — typically an implementation materializing formatting defaults on save. That is legal WordprocessingML serialization freedom, not a conformance failure; the per-assertion breakdown in latest.json carries the detail.

Scenariosafe-docx
0.11.0+git.f5a16a3ab1f9
python-docx
1.2.0
libreoffice
LibreOffice 24.2.7.2 420(Build:2)
openxml-sdk
DocumentFormat.OpenXml 3.5.1
acceptDeletedParagraphMarkMergesParagraphs
Accepting a deleted paragraph mark merges the paragraph with the following paragraph
ECMA-376 edition 5, Part 1 § 17.13.5.15 (del (Deleted Paragraph))
FailUnsupported
python-docx has no tracked-changes (revision) API
PassUnsupported
the Open XML SDK is a typed DOM over the package with no accept/reject-revisions API; implementing one would be an adapter-side algorithm
acceptDeletionsRemovesDelContent
Accepting deletions removes w:del wrappers and their content
ECMA-376 edition 5, Part 1 § 17.13.5.14 (del (Deleted Run Content))
PassUnsupported
python-docx has no tracked-changes (revision) API
Pass (divergent serialization)Unsupported
the Open XML SDK is a typed DOM over the package with no accept/reject-revisions API; implementing one would be an adapter-side algorithm
acceptFormattingChangeKeepsNewRunProperties
Accepting formatting changes keeps current run properties
ECMA-376 edition 5, Part 1 § 17.13.5.31 (rPrChange (Revision Information for Run Properties))
PassUnsupported
python-docx has no tracked-changes (revision) API
Pass (divergent serialization)Unsupported
the Open XML SDK is a typed DOM over the package with no accept/reject-revisions API; implementing one would be an adapter-side algorithm
acceptInsertionsUnwrapsInsWrappers
Accepting insertions unwraps w:ins and keeps run content
ECMA-376 edition 5, Part 1 § 17.13.5.18 (ins (Inserted Run Content))
PassUnsupported
python-docx has no tracked-changes (revision) API
Pass (divergent serialization)Unsupported
the Open XML SDK is a typed DOM over the package with no accept/reject-revisions API; implementing one would be an adapter-side algorithm
acceptNestedDeletionInsideInsertion
Accepting nested deletion inside insertion keeps surviving inserted text
ECMA-376 edition 5, Part 1 § 17.13.5.18 (ins (Inserted Run Content))
PassUnsupported
python-docx has no tracked-changes (revision) API
PassUnsupported
the Open XML SDK is a typed DOM over the package with no accept/reject-revisions API; implementing one would be an adapter-side algorithm
rejectDeletionsRestoresDelContent
Rejecting deletions restores w:delText content to body text
ECMA-376 edition 5, Part 1 § 17.13.5.14 (del (Deleted Run Content))
PassUnsupported
python-docx has no tracked-changes (revision) API
Pass (divergent serialization)Unsupported
the Open XML SDK is a typed DOM over the package with no accept/reject-revisions API; implementing one would be an adapter-side algorithm
rejectFormattingChangeRestoresPriorRunProperties
Rejecting formatting changes restores prior run properties
ECMA-376 edition 5, Part 1 § 17.13.5.31 (rPrChange (Revision Information for Run Properties))
PassUnsupported
python-docx has no tracked-changes (revision) API
Pass (divergent serialization)Unsupported
the Open XML SDK is a typed DOM over the package with no accept/reject-revisions API; implementing one would be an adapter-side algorithm
rejectInsertedParagraphMarkMergesParagraphs
Rejecting an inserted paragraph mark removes the mark and merges the paragraph with the following paragraph
ECMA-376 edition 5, Part 1 § 17.13.5.20 (ins (Inserted Paragraph))
FailUnsupported
python-docx has no tracked-changes (revision) API
PassUnsupported
the Open XML SDK is a typed DOM over the package with no accept/reject-revisions API; implementing one would be an adapter-side algorithm
rejectInsertionsRemovesInsContent
Rejecting insertions removes w:ins wrappers and their run content
ECMA-376 edition 5, Part 1 § 17.13.5.18 (ins (Inserted Run Content))
PassUnsupported
python-docx has no tracked-changes (revision) API
Pass (divergent serialization)Unsupported
the Open XML SDK is a typed DOM over the package with no accept/reject-revisions API; implementing one would be an adapter-side algorithm
rejectNestedDeletionInsideInsertion
Rejecting nested deletion inside insertion removes the whole insertion
ECMA-376 edition 5, Part 1 § 17.13.5.18 (ins (Inserted Run Content))
PassUnsupported
python-docx has no tracked-changes (revision) API
PassUnsupported
the Open XML SDK is a typed DOM over the package with no accept/reject-revisions API; implementing one would be an adapter-side algorithm
replaceFirstOccurrencePreservesOffsets
Replacing the first occurrence places the new text at the matched offset
ECMA-376 edition 5, Part 1 § 17.3.3.31 (t (Text))
PassPassPassPass
replaceTextAcrossRunBoundary
Replacing text spanning a run boundary places the replacement at the matched offset
ECMA-376 edition 5, Part 1 § 17.3.3.31 (t (Text))
PassUnsupported
match spans run boundaries; the python-docx adapter only performs intra-run replacement (glue, not algorithms)
PassUnsupported
first occurrence spans w:t boundaries; the openxml-sdk adapter only performs intra-w:t replacement (glue, not algorithms)

Data: results/latest.json · Suite, scenario DSL, and adapter protocol: open-agreements/docx-platform-tests (Apache-2.0) · Narrative comparisons: usejunior.com