E2E: QA add acceptance tests published querying parity#23047
Conversation
…ished querying parity Covers PR #22622 (V13/V17 published querying parity) at the E2E level: - a descendant is not routable in a culture where an ancestor is unpublished - a descendant still renders in cultures where the ancestor chain is published - Parent/Ancestors() return ancestors that are unpublished in the requested culture Adds reusable variant-branch, per-culture publish/unpublish, culture URL and path-domain helpers to support culture-variant rendering scenarios. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…-tests-published-querying-parity
|
Claude finished @andr317c's task in 3m 10s —— View job PR Review: E2E tests for published querying parityOverall verdict: Approve with suggestions. The tests cover meaningful behavior (culture publish status querying parity), the new helper methods are clean and reusable, and the setup/teardown is well structured. Two findings worth addressing before merge. Summary of findings
Positive notes
Labels applied: |
| @@ -23,7 +23,8 @@ | |||
| "testSqlite": "npm run build && npx playwright test DefaultConfig --grep-invert \"Users\"", | |||
| "all": "npm run build && npx playwright test", | |||
| "createTest": "node createTest.js", | |||
There was a problem hiding this comment.
[Medium] Typo in smokeTest script: RenderingContentWIthCulturePublishStatus has an uppercase I in "WIth", but the actual spec file is named RenderingContentWithCulturePublishStatus.spec.ts. On Linux (where CI runs), filesystem lookups are case-sensitive, so this script will likely find zero tests and exit silently.
Suggestion: change RenderingContentWIthCulturePublishStatus → RenderingContentWithCulturePublishStatus.
There was a problem hiding this comment.
Pull request overview
Adds new Playwright acceptance coverage for culture-variant published/unpublished descendant rendering, plus a few helper APIs to create/publish/unpublish variant documents and document types.
Changes:
- Added E2E spec verifying descendant rendering parity when an ancestor is unpublished in a specific culture.
- Extended acceptance-test API helpers with variant document/document type creation and culture-scoped publish/unpublish/url utilities.
- Updated acceptance-test
package.jsonscripts (currently with a broken/behavior-changingsmokeTestentry).
Reviewed changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated 4 comments.
| File | Description |
|---|---|
| tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/RenderingContent/RenderingContentWithCulturePublishStatus.spec.ts | New E2E test validating culture-specific publish state affects descendant querying/rendering. |
| tests/Umbraco.Tests.AcceptanceTest/package.json | Adjusts smoke scripts (currently introduces a likely typo + changes smoke semantics). |
| tests/Umbraco.Tests.AcceptanceTest/lib/helpers/DocumentTypeApiHelper.ts | Adds helper to create variant doc types with template + allowed child configuration. |
| tests/Umbraco.Tests.AcceptanceTest/lib/helpers/DocumentApiHelper.ts | Adds helpers for publish/unpublish by cultures, culture-specific URL lookup, and variant document creation. |
| "smokeTest": "npm run build && npx playwright test RenderingContentWIthCulturePublishStatus", | ||
| "smokeTester": "npm run build && npx playwright test DefaultConfig --grep \"@smoke\"", |
| async getDocumentUrlByCulture(id: string, culture: string) { | ||
| const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/document/urls?id=' + id); | ||
| const urls = await response.json(); | ||
| const urlInfo = urls[0].urlInfos.find(info => info.culture === culture); | ||
|
|
||
| return urlInfo ? urlInfo.url : null; | ||
| } |
| async createVariantDocumentWithParent(documentTypeId: string, templateId: string, name: string, cultures: string[], parentId?: string) { | ||
| const documentBuilder = new DocumentBuilder() | ||
| .withDocumentTypeId(documentTypeId) | ||
| .withTemplateId(templateId); | ||
|
|
||
| if (parentId) { | ||
| documentBuilder.withParentId(parentId); | ||
| } |
| const rootContentName = 'RootContent'; | ||
| const publishedChildName = 'PublishedChild'; | ||
| const unpublishedChildName = 'UnpublishedChild'; | ||
| const grandchildContentName = 'Grandchild'; |
|



No description provided.