Skip to content

fix(tests): stabilize release/650 authoring Cypress tests - #2007

Merged
rismehta merged 10 commits into
release/650from
fix/650-authoring-stability
Oct 7, 2026
Merged

rismehta merged 10 commits into
release/650from
fix/650-authoring-stability

Conversation

@rismehta

@rismehta rismehta commented Oct 6, 2026 •

Copy link
Copy Markdown
Collaborator

Description

Stabilize the reported release/650 authoring failures in wizard, checkbox group, dropdown, content/experience fragment, telephone input, Button inline editing, and TextInput validation-pattern tests.

  • Synchronize Insert filtering, editable refresh, configure save/cancel, layer switching, and persisted deletion. Recover bounded lost opening clicks without retrying whole tests.
  • Use classic Coral controls on 6.5, assert invalid input state/error text instead of covered icons/tooltips, and scope checkbox assertions to the tested group.
  • Make rich-text/inline/rule-editor setup independent, wait for the rule statement builder, and select the wizard panel without opening the failing Coral Content Tree.
  • Remove the redundant experience-fragment submit, snapshot/restore telephone policy state, and clean only named test fixtures even when the editor fails.
  • Select TextInput validation patterns through classic Coral items rather than an absent nativeSelect.
  • Wait for Button inline editing to close before deletion. Verify a nonempty caption in preview and persisted jcr:title, then retain the original empty-caption edit and verify the empty native button/title before deletion. Add failure-safe named-fixture teardown.
  • Document default-off request authentication for remote author endpoints. Preserve the existing default UI login.
  • Correct the shared authenticated POST regression: preferences, policy restoration, and fixture cleanup now send the configured AEM baseUrl as Referer, alongside the CSRF token. Requests remain awaited and HTTP errors are not suppressed.
  • Remove the unconditional overlay-reposition event wait after layer selection; it timed out even after the requested layer was selected on SP and LTS. Operation-specific refresh waits remain.
  • Read invalid-field state and messages through a shared public Granite adapter helper, detecting getValidationMessage() or validationMessage() rather than relying on Coral error-label/tooltip markup.
  • Use public Coral dialog open state and a unique visible native Insert input instead of internal presentation classes. Include request-login referrer metadata, without changing default UI authentication.
  • Persist the verified SP/LTS compatibility and normal-Chrome ngrok setup guidance in docs/e2e-testing/authoring-compatibility.md, linked from the module README and CLAUDE.md.

The standalone authoring.synchronization.cy.js spec has been removed at the requestor's direction; it is not part of the final PR diff. The shared synchronization fixes remain.

Related Issue

Reported release/650 authoring failures supplied for this change; no separate tracking issue was supplied. Related prior work: #2006, which targets dev, not release/650.

Motivation and Context

Visible controls can appear before their handlers/editor transitions finish, and classic Coral markup differs from master. Broad selectors, test-order dependencies, and persistent policy mutations amplify those races. This change addresses those causes rather than suppressing application exceptions, adding fixed sleeps, or relying on per-test retries.

Marked ready for review at the requestor's direction; not a claim of complete validation. All live validation uses the supplied HTTPS author endpoint, not localhost. The current https://panning-endnote-carol.ngrok-free.dev backend is verified as AEM 6.5.25.0 SP, with active Core Forms bundles 1.1.83.SNAPSHOT; the same URL previously pointed to LTS. All 17 distinct reported cases have now passed at least once after their relevant corrections on SP, using normal Chrome and no whole-test retries. Actual current-source LTS, the complete 153-spec suite, and final whole-PR review are still pending.

The old LTS backend's four unrelated blank-form nodes were preserved under a verified backup with explicit authorization, but could not be restored before that backend disappeared. That backup is absent on the replacement SP backend, whose separate pre-test blank-form baseline had no component child nodes. Old-LTS restoration remains outstanding; do not mistake the replacement server for the original backend or manufacture those nodes on SP.

CI regression on d3ef7a4f6: all three Cypress variants failed; the requestor reported the same preferences POST 403 across 83 tests in each run. This was introduced by changing browser jQuery POST to cy.request() without preserving referrer metadata. Prior live runs used the non-browser Cypress-Live-650 user agent, which bypasses Sling's browser-user-agent referrer classification and masked this defect. Those results are historical component evidence, not proof of CI/default-browser compatibility. The new header correction must receive fresh CI results.

Separate known CI blocker: validate_test_files rejects unchanged, pre-existing it.skip cases in modified files because it scans complete files. The requestor explicitly asked to leave this CI failure/policy unchanged for now. No skipped tests were newly introduced or enabled to bypass the gate. Java 8, 11, and 21 CircleCI passed on d3ef7a4f6; these do not validate the Cypress regression.

Eight reported cases passed ten isolated repetitions each on 5fd5c61d1, with exact fixture/policy restoration. The ninth exposed an early layer readiness cutoff: five polling attempts exhausted after about three seconds despite a ten-second timeout. Commit 9c0661f94 aligns the iteration budget with that timeout. A controlled 4.5-second layer-option delay reproduced the failure before the fix and passed afterward. Repeated acceptance subsequently restarted but was interrupted; the earlier eighty passes are not claimed as final-head acceptance.

At 9c0661f94, four cases completed ten repetitions each with no failures, retries, or fixture/policy drift: telephone validation-pattern change, Sites wizard second-panel toolbar, checkbox rule-editor rich enum names, and checkbox duplicate enum values. The standalone-spec removal does not change these component test bodies or their shared helpers. The queued five complete-suite repetition runs were cancelled as requested because the server may become unavailable; they were not run. Other completed live results below are historical investigation evidence, not a claim that the whole repository suite passed.

How Has This Been Tested?

Remaining Button and equality-rule failures: final live verification (2026-10-07)

Commit 1953c22491672df72654f94fc5801a1b4e2d2acf fixes the two remaining reported cases. The previous Button fix handled lost clicks but did not configure the required editor type: toolbaractionhook.js selects plaintext when the rendered label/text lacks data-richtext, so waiting/retrying for .rte-toolbar cannot succeed. The caption-edit case now explicitly enables and saves isTitleRichText before opening RTE, preserving both nonempty and empty-caption save assertions.

The equality-rule fix backports master's parsed-JSON/deep-equality assertion for fd:events.change without weakening the expected script. It also uses the existing cy.createRule() readiness helper, cleans the named source fixture before insertion and in a scoped afterEach, and explicitly selects that source field's generated name as the hide target. Selecting the first option could instead choose a leftover sibling and generate the reported dispatchEvent script. Duplicate rules and wrong behavior still fail the exact assertion.

Final live result: both cases passed twice, 4/4 executions, zero failures, retries disabled and one attempt per case. Verified on the supplied ngrok endpoint (https://panning-endnote-carol.ngrok-free.dev), AEM 6.5.25.0 SP, normal headless Chrome 154.0.8037.98, Cypress 13.17.0, Node 22.19.0. Used documented ngrok warning-bypass headers and optional request authentication, with no browser user-agent override. Source hashes were checked before committing to ensure the published specs exactly match the accepted runs.

Final-source case Run 1 Run 2
open Inline edit dialog of Button Passed, 1 attempt Passed, 1 attempt
should add rule on texbox equality operator to hide a text box Passed, 1 attempt Passed, 1 attempt

These final two runs included a deliberately seeded unrelated sibling input in the rule form, validating self-target selection rather than only an empty-form success. Both fixture baselines were preserved after each run, including the existing panel in the Button form and the sibling input. The diagnostic sibling was then removed and the original rule-form baseline restored. The diagnostic copies keep current test bodies/hooks, set global retries to 0, remove per-test overrides, and mark only the other cases pending: 2 passing / 0 failing / 11 intentionally pending / 0 skipped-after-hook per combined run. No skips were added to committed specs.

Exact executed command (credentials redacted; the session-only runner executes both repetitions):

env -u ELECTRON_RUN_AS_NODE AEM_USERNAME='<redacted>' AEM_PASSWORD='<redacted>' \
  node /Users/rismehta/.copilot/session-state/618fea77-b075-4cc9-9f3e-895c9b0082d1/files/run-remaining-live.cjs

Passed. Selected target/isolated/remaining-button.cy.js and target/isolated/ruleeditor/remaining-equality.cy.js, with baseUrl=https://panning-endnote-carol.ngrok-free.dev, retries=0, video=false, and normal Chrome. An intermediate live attempt passed Button but failed the rule case while Create Rule was still covered by the editor's frozen state; that readiness issue was fixed before these accepted final-source repetitions.

Also ran:

node --test /Users/rismehta/.copilot/session-state/618fea77-b075-4cc9-9f3e-895c9b0082d1/files/button-inline-regression.cjs /Users/rismehta/.copilot/session-state/618fea77-b075-4cc9-9f3e-895c9b0082d1/files/rule-save-regression.cjs

Passed: 9/9 offline contract regressions, including plaintext-default behavior, explicit self-target selection with a preceding sibling, structured JSON validation, duplicate/wrong-rule rejection and bounded persistent opening failure. The new positive regressions failed before their relevant fixes.

cd ui.tests/test-module
./node_modules/.bin/eslint --no-eslintrc --env browser,node,es6,mocha --global cy --global Cypress --global expect --parser-options '{"ecmaVersion":2022,"sourceType":"module"}' --rule 'no-undef:error' specs/button/button.authoring.cy.js specs/ruleeditor/authoring/ruleEditor.authoring.cy.js
git diff --check

Both passed. This is focused SP acceptance for the two requested cases, not the entire specs/suite or LTS. Fresh CI on this commit remains required; the failures on 556e4d5ed are not evidence about this correction. Two passes do not guarantee that every future race is eliminated.

Historical Button runs on 556e4d5 (superseded by the correction above)

Those isolated passes were real but insufficient: subsequent CI exposed the plaintext/RTE mismatch. They do not establish that the earlier lost-click fix resolved the remaining Button failure.

Verified commit 556e4d5ed82a361d5a1ab68d73f4ba62d0995d40 against https://panning-endnote-carol.ngrok-free.dev after restart. Product information reports AEM 6.5.25.0; all four Core Forms component bundles were Active, version 1.1.83.SNAPSHOT. Browser: normal Chrome 154.0.8037.98 headless; Cypress 13.17.0, Node 22.19.0. Used the documented ngrok warning-bypass headers and optional request-based login, without overriding the browser user agent.

The ignored selection copy retains the current Button test bodies and hooks; only the five unrelated cases are marked pending. Global retries are 0, and per-test retry overrides are removed from the diagnostic copy. The runner performs two separate Cypress runs and verifies the fixture baseline after each.

Reported case Run 1 Run 2
open Inline edit dialog of Button Passed, 1 attempt Passed, 1 attempt
check rich text inline editor is present Passed, 1 attempt Passed, 1 attempt

Result: 4/4 requested live executions passed, zero failures, no whole-test retries. Each run collected 2 passing / 0 failing / 5 intentionally pending / 0 skipped-after-hook cases. The blank-form container had no child nodes before testing and retained that exact child baseline after both runs; the test-owned Button was removed each time. This confirms the rich-text-inline case works without relying on its preceding test.

Exact executed command (credentials redacted; this session-only runner performs both repetitions):

env -u ELECTRON_RUN_AS_NODE AEM_USERNAME='<redacted>' AEM_PASSWORD='<redacted>'   node /Users/rismehta/.copilot/session-state/618fea77-b075-4cc9-9f3e-895c9b0082d1/files/run-live-button.cjs

Passed. The runner uses target/isolated/button-live-selected.cy.js, target/button-live-support.js, baseUrl=https://panning-endnote-carol.ngrok-free.dev, retries=0, video=false, and crx.loginViaRequest=true with ngrok headers on browser subresources, visits and requests. Before these two successful runs, a launch collected no specs because the API spec path resolved against the repository root; that path was corrected before either accepted run. Earlier readiness probes found undeployed content/inactive bundles and did not execute tests.

Scope: these are the two requested Button cases on SP, repeated twice—not a full Button spec, full suite, LTS validation, or proof that current CI is green. Finite repetitions cannot guarantee the absence of future races.

Authenticated POST 403 regression

Ran a session-only diagnostic with real Cypress/Chrome, no user-agent override and no retries, extracting the actual helper implementations from the previous head and current source. A local HTTP fixture models Sling's missing-referrer rejection, requires a session cookie and CSRF token, and delays POST completion. This is controlled regression evidence, not a live AEM run; it does not add a standalone synchronization spec to the PR.

node /Users/rismehta/.copilot/session-state/f05bde69-f90c-48af-ba37-b42006f02573/files/preferences-referrer-regression.js

Passed its expected-outcome checks: before the fix, all three paths failed with 403 (preferences, policy restoration, fixture deletion); after the fix, all three passed. Preferences were exercised for both enable and disable, completion was awaited, and context-path handling was exercised. A forced server rejection still failed with 403 after the fix, proving errors are not hidden.

cd ui.tests/test-module
./node_modules/.bin/eslint --no-eslintrc --env browser,node,es6,mocha \
  --global cy --global Cypress --global expect \
  --parser-options '{"ecmaVersion":2022,"sourceType":"module"}' \
  --rule 'no-undef:error' libs/support/commands.js
git diff --check

Passed. Correction published in 63685e3de. The endpoint was offline at that publication; normal-browser live SP first-pass acceptance has since completed as recorded below. Fresh CI results for the latest corrections remain required.

Current live SP first-pass acceptance

Verified /system/console/status-productinfo.txt as Adobe Experience Manager (6.5.25.0) before generation. Used normal Chrome154, Cypress13.17, global retries0 and selected cases without per-test retries. The temporary ignored selection copies retain actual test bodies/hooks; unrelated tests are pending only in those copies, not newly skipped in repository specs. The ngrok warning header is forwarded with native Chrome CDP and node-side request/initial-visit headers; no non-browser user-agent override, broad interception, or exception suppression is used.

From ui.tests/test-module, each row used this exact command shape with the listed substitution (credentials redacted):

./node_modules/.bin/cypress run --browser chrome --headless \
  --spec 'target/isolated/<selection>' \
  --config 'specPattern=target/isolated/<selection>,baseUrl=https://panning-endnote-carol.ngrok-free.dev,retries=0,video=false' \
  --env 'crx.username=<redacted>,crx.password=<redacted>,crx.loginViaRequest=true'
<selection> Actual result
sp-probe-01-text.authoring.cy.js Text Sites edit dialog: 1 passed.
sp-latest-remaining-*.cy.js Fragment, Page Header, DateTime, Scribble, Content Fragment: 5 passed. Checkbox failed because the documented message accessor was absent on actual SP.
sp-checkbox-01-checkboxgroup.authoring.cy.js After detecting the served SP getValidationMessage() accessor: Checkbox validation passed, including Number and Boolean.
sp-earlier-*.cy.js 9 passed: wizard second-panel toolbar; checkbox rich-enum rule, duplicate values and rich label; dropdown validation; experience fragment; both telephone cases; TextInput custom pattern. Button failed because the previous patch required a nonempty caption span after clearing its caption.
sp-button-01-button.authoring.cy.js Corrected Button passed in 20s: nonempty preview/title save, original empty-caption edit, toolbar closure, deletion and API teardown. 6 unrelated cases intentionally pending in the diagnostic copy.

17/17 distinct reported cases have now passed after their relevant corrections. This is first-pass coverage, not a claim that a combined/full suite or LTS has passed. A stopped intermediate Button attempt failed in setup; its exact setup root cause was not established. The owned failed-run Button was verified absent from the original SP baseline and cleaned before successful reruns.

node /Users/rismehta/.copilot/session-state/f05bde69-f90c-48af-ba37-b42006f02573/files/validation-api-contract.test.js

Passed: 8/8 contract checks for both accessor forms/context binding, precedence, missing adapter/accessor, wrong message, valid field and ambiguous selector. These session-only checks execute the current helper, but are not live LTS acceptance.

cd ui.tests/test-module
./node_modules/.bin/eslint --no-eslintrc --env browser,node,es6,mocha \
  --global cy --global Cypress --global expect \
  --parser-options '{"ecmaVersion":2022,"sourceType":"module"}' \
  --rule 'no-undef:error' libs/support/commands.js \
  specs/checkboxgroup/checkboxgroup.authoring.cy.js \
  specs/dropdown/dropdown.authoring.cy.js \
  specs/button/button.authoring.cy.js
git diff --check

Passed for the current fixes.

Historical live evidence

Chrome 154 headless, Cypress 13.17.0, Node 22.19.0, supplied remote release/650 AEM author. Credentials are intentionally redacted below; no private diagnostic logs are attached.

From ui.tests/test-module:

./node_modules/.bin/cypress run --browser chrome --headless \
  --spec 'specs/authoring/authoring.synchronization.cy.js,target/isolated/checkboxgroup-rule-native.cy.js' \
  --config 'baseUrl=https://32c4-44-203-61-225.ngrok-free.app,retries=0,video=false,userAgent=Cypress-Live-650' \
  --env 'crx.username=<redacted>,crx.password=<redacted>,crx.loginViaRequest=true'

Passed: 4/4 framework regressions. Default spec collection excluded the generated isolated file in this command, so the rule case was separately collected and run explicitly:

./node_modules/.bin/cypress run --browser chrome --headless \
  --spec 'target/isolated/checkboxgroup-rule-native.cy.js' \
  --config 'specPattern=target/isolated/**/*.cy.js,baseUrl=https://32c4-44-203-61-225.ngrok-free.app,retries=0,video=false,userAgent=Cypress-Live-650' \
  --env 'crx.username=<redacted>,crx.password=<redacted>,crx.loginViaRequest=true'

Passed: 1/1 rule-editor case; six other cases intentionally pending in the session-only selection copy. The generated copy keeps the selected body and hooks unchanged and references the current repository helpers.

./node_modules/.bin/cypress run --browser chrome --headless \
  --spec 'target/isolated/policy-snapshot.cy.js' \
  --config 'specPattern=target/isolated/**/*.cy.js,baseUrl=https://32c4-44-203-61-225.ngrok-free.app,retries=0,video=false,userAgent=Cypress-Live-650' \
  --env 'crx.username=<redacted>,crx.password=<redacted>,crx.loginViaRequest=true'

Passed: 1/1 live policy snapshot check, including an originally empty custom-format root/item and exact restoration. Its uniquely named temporary policy was removed. Diagnostic selection/policy specs remain ignored, not committed.

Earlier live investigation runs also passed all six dropdown cases, all three content/experience-fragment cases, all six telephone cases, and all eight active wizard cases. Those runs preceded the final combined source revision and are not a substitute for the pending final acceptance.

./node_modules/.bin/eslint --no-eslintrc --env browser,node,es6,mocha \
  --global cy --global Cypress --global expect \
  --parser-options '{"ecmaVersion":2022,"sourceType":"module"}' \
  --rule 'no-undef:error' libs/support/commands.js \
  specs/wizard/wizard.authoring.cy.js \
  specs/checkboxgroup/checkboxgroup.authoring.cy.js \
  specs/dropdown/dropdown.authoring.cy.js \
  specs/contentfragment/contentfragment.authoring.cy.js \
  specs/telephoneinput/telephoneinput.authoring.cy.js
git diff --check

All passed. ESLint was restored for validation only without changing manifests/lockfiles. The repository's full lint configuration already fails on the actual base f78320060 (18,027 errors); this is not a claim that every candidate lint finding is pre-existing.

./node_modules/.bin/cypress run --browser chrome --headless \
  --spec 'specs/authoring/authoring.synchronization.cy.js' \
  --config 'baseUrl=https://panning-endnote-carol.ngrok-free.dev,retries=0,video=false,userAgent=Cypress-Live-650' \
  --env 'crx.username=<redacted>,crx.password=<redacted>,crx.loginViaRequest=true'

Historical layer-budget regression (spec subsequently removed): before fix, 3 passed / 1 failed with the same premature iteration limit; after fix, all 4 passed. Remaining-PR focused JavaScript lint and whitespace checks passed again after removal.

Remaining validation limits: not all nine cases have completed ten repetitions on the layer-budget-fixed revision. A complete final-head five-spec run, adjacent helper-consumer/default-auth coverage, final whole-PR review, and current-head CI results remain incomplete. The five affected authoring specs contain 30 active cases and two existing skipped wizard fragment cases. Repeated complete-suite runs are no longer requested. No claim of complete repository-wide validation or a guarantee that flakiness can never recur.

Additional Button and TextInput failures

Both additional reported cases were run once before changes on https://panning-endnote-carol.ngrok-free.dev, with retries disabled. Both failed: Button left its inline toolbar open and exhausted the normal-toolbar retry loop during deletion; TextInput could not find select[handle="nativeSelect"].

./node_modules/.bin/cypress run --browser chrome --headless \
  --spec 'target/isolated/button-inline-once.cy.js,target/isolated/textinput-custom-once.cy.js' \
  --config 'specPattern=target/isolated/**/*.cy.js,baseUrl=https://panning-endnote-carol.ngrok-free.dev,retries=0,video=false,userAgent=Cypress-Live-650' \
  --env 'crx.username=<redacted>,crx.password=<redacted>,crx.loginViaRequest=true'

The same selected-case command after the TextInput selector change passed TextInput (1/1, no retries). Its live DOM was a classic coral-select with coral-select-item/coral-selectlist-item options. Commit bb58b09e2 contains that validated fix.

The historical Button patch in d3ef7a4f6 waits for the inline toolbar to appear and retries outside-click dismissal only while it remains open. It removes the reported case's whole-test retry override. It was explicitly published before live verification while the endpoint was offline. Its nonempty-span assertion after clearing the caption was incorrect and is replaced by the current live-verified coverage above. An exploratory Save-button approach did not work because that control remained disabled; it was not committed.

./node_modules/.bin/eslint --no-eslintrc --env browser,node,es6,mocha \
  --global cy --global Cypress --global expect \
  --parser-options '{"ecmaVersion":2022,"sourceType":"module"}' \
  --rule 'no-undef:error' specs/button/button.authoring.cy.js \
  specs/textinput/textinput.authoring.cy.js
git diff --check

Passed for both added fixes.

Whole-suite request: run the entire configured Cypress suite once (153 authoring/runtime JS specs), not merely the original affected specs, then review the whole PR. This run has not yet started; the current SP endpoint is available and first-pass fixes are ready for publication before that run. Original-LTS preservation/restoration is a separate outstanding obligation described above; no original nodes were deleted.

Screenshots (if appropriate):

Not attached; private live diagnostics remain local.

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)

Checklist:

  • I have signed the Adobe Open Source CLA.
  • My change requires a change to the documentation.
  • I have updated the documentation accordingly.
  • I have read the CONTRIBUTING document.
  • I have added tests to cover my changes and the overall coverage did not decrease.
  • All unit tests pass on CircleCi.
  • I ran all tests locally and they pass.

rismehta and others added 3 commits October 6, 2026 14:43
Synchronize editor transitions, isolate fixtures, use classic Coral controls, and preserve telephone policy state. Add controlled authoring race regressions and optional remote request authentication.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Reproduce the early iteration-limit failure with a delayed layer option and allow polling throughout the existing ten-second timeout.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Keep the component fixes and shared helpers, remove the synthetic synchronization suite as requested, and update the documented spec selection.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@rismehta
rismehta marked this pull request as ready for review October 6, 2026 10:16
rismehta and others added 7 commits October 6, 2026 16:15
Use Coral option items and the shared selection helper instead of a nativeSelect that is absent on release/650. Isolate the custom-regex case and wait for configure cancellation.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Wait for the inline toolbar to open and close using bounded outside-click recovery before reopening the editable toolbar. Assert the actual preview label and remove whole-test retries from the reported case. Live validation remains blocked by the offline supplied endpoint.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Preserve same-origin referrer metadata for awaited preferences, policy restoration and fixture cleanup requests. Validate all three paths with normal Chrome user agent against a controlled rejection fixture; keep HTTP errors visible.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Use selected layer state and public Granite validation accessors. Preserve Button empty-caption coverage and verify inline persistence. Document normal-browser remote setup and compatibility checks.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Install Node.js 22.19.0 in the shared Cypress setup and pin Lighthouse to 13.5.0 to prevent JSON import attribute parsing failures on the older test-runner images.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@adobe-bot

Copy link
Copy Markdown

Lighthouse scores (mobile)

Performance Accessibility Best-Practices SEO
Scores 88 91 96 75

@adobe-bot

Copy link
Copy Markdown

Lighthouse scores (desktop)

Performance Accessibility Best-Practices SEO
Scores 100 91 96 75

@adobe-bot

Copy link
Copy Markdown

Accessibility Violations Found

Id Impact
aria-required-attr critical
empty-heading minor
label-title-only serious
target-size serious

@rismehta
rismehta merged commit 8b98baa into release/650 Oct 7, 2026
8 of 11 checks passed
@rismehta
rismehta deleted the fix/650-authoring-stability branch October 7, 2026 08:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants