chrome-devtools-frontend 1.0.1664619 → 1.0.1666631
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/skills/devtools-testing-guidance/SKILL.md +52 -0
- package/.agents/skills/devtools-ux-writing-refactor/SKILL.md +1 -1
- package/.agents/skills/migrate-chromium-test/SKILL.md +63 -48
- package/.agents/skills/ui-eng-vision-local-lit-renderer/SKILL.md +21 -6
- package/.agents/skills/ui-eng-vision-logic-consolidator/SKILL.md +11 -2
- package/.agents/skills/ui-eng-vision-orchestrator/SKILL.md +46 -9
- package/.agents/skills/ui-eng-vision-test-scaffolder/SKILL.md +20 -1
- package/.agents/skills/ui-eng-vision-widget-promoter/SKILL.md +11 -0
- package/eslint.config.mjs +8 -0
- package/front_end/Images/rollup.config.mjs +1 -1
- package/front_end/Tests.js +15 -16
- package/front_end/core/common/Gzip.ts +2 -2
- package/front_end/core/common/Settings.ts +4 -20
- package/front_end/core/common/Srcset.ts +1 -1
- package/front_end/core/common/VersionController.ts +1 -1
- package/front_end/core/host/AidaClient.ts +109 -60
- package/front_end/core/host/AidaGcaTranslation.ts +2 -2
- package/front_end/core/host/GcaClient.ts +5 -5
- package/front_end/core/host/GdpClient.ts +3 -3
- package/front_end/core/host/UserMetrics.ts +1 -12
- package/front_end/core/protocol_client/DevToolsCDPConnection.ts +2 -2
- package/front_end/core/protocol_client/InspectorBackend.ts +1 -1
- package/front_end/core/root/Runtime.ts +0 -1
- package/front_end/core/sdk/CSSMatchedStyles.ts +3 -3
- package/front_end/core/sdk/CSSMetadata.ts +17 -12
- package/front_end/core/sdk/CSSProperty.ts +1 -1
- package/front_end/core/sdk/CSSPropertyParserMatchers.ts +2 -2
- package/front_end/core/sdk/CSSRule.ts +3 -3
- package/front_end/core/sdk/CSSStyleSheetHeader.ts +3 -3
- package/front_end/core/sdk/CompilerSourceMappingContentProvider.ts +1 -1
- package/front_end/core/sdk/Connections.ts +1 -1
- package/front_end/core/sdk/DebuggerModel.ts +13 -13
- package/front_end/core/sdk/NetworkManager.ts +19 -19
- package/front_end/core/sdk/NetworkRequest.ts +58 -103
- package/front_end/core/sdk/OverlayModel.ts +1 -1
- package/front_end/core/sdk/PageResourceLoader.ts +2 -2
- package/front_end/core/sdk/RehydratingConnection.ts +5 -5
- package/front_end/core/sdk/ScreenCaptureModel.ts +1 -1
- package/front_end/core/sdk/Script.ts +2 -2
- package/front_end/core/sdk/ServerTiming.ts +7 -7
- package/front_end/core/sdk/ServiceWorkerCacheModel.ts +1 -1
- package/front_end/core/sdk/ServiceWorkerManager.ts +11 -11
- package/front_end/core/sdk/SourceMapScopeChainEntry.ts +2 -2
- package/front_end/core/sdk/SourceMapScopesInfo.ts +1 -1
- package/front_end/core/sdk/StorageKeyManager.ts +1 -1
- package/front_end/core/sdk/sdk-meta.ts +98 -98
- package/front_end/devtools_compatibility.js +15 -13
- package/front_end/entrypoints/heap_snapshot_worker/HeapSnapshot.ts +4 -8
- package/front_end/entrypoints/main/MainImpl.ts +2 -14
- package/front_end/entrypoints/main/main-meta.ts +1 -1
- package/front_end/foundation/README.md +1 -1
- package/front_end/foundation/Universe.test.api.ts +73 -0
- package/front_end/foundation/Universe.ts +37 -0
- package/front_end/generated/InspectorBackendCommands.ts +4 -4
- package/front_end/generated/SupportedCSSProperties.js +1 -1
- package/front_end/generated/protocol.ts +21 -1
- package/front_end/models/ai_assistance/AiAgent2.ts +1 -1
- package/front_end/models/ai_assistance/AiConversation.ts +1 -1
- package/front_end/models/ai_assistance/BuiltInAi.ts +1 -1
- package/front_end/models/ai_assistance/ChangeManager.ts +0 -70
- package/front_end/models/ai_assistance/ExtensionScope.ts +2 -36
- package/front_end/models/ai_assistance/agents/AccessibilityAgent.ts +9 -9
- package/front_end/models/ai_assistance/agents/AiAgent.ts +23 -14
- package/front_end/models/ai_assistance/agents/ContextSelectionAgent.ts +4 -4
- package/front_end/models/ai_assistance/agents/ExecuteJavascript.ts +1 -1
- package/front_end/models/ai_assistance/agents/PerformanceAgent.ts +21 -21
- package/front_end/models/ai_assistance/agents/StorageAgent.ts +4 -4
- package/front_end/models/ai_assistance/agents/StylingAgent.ts +1 -1
- package/front_end/models/ai_assistance/ai_assistance.ts +0 -5
- package/front_end/models/ai_assistance/data_formatters/PerformanceInsightFormatter.ts +14 -11
- package/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.ts +23 -7
- package/front_end/models/ai_assistance/tools/ExecuteJavaScript.ts +1 -1
- package/front_end/models/ai_assistance/tools/GetStyles.ts +4 -4
- package/front_end/models/ai_code_completion/AiCodeCompletion.ts +2 -2
- package/front_end/models/ai_code_generation/AiCodeGeneration.ts +2 -2
- package/front_end/models/bindings/ContentProviderBasedProject.ts +1 -1
- package/front_end/models/bindings/DebuggerLanguagePlugins.ts +6 -7
- package/front_end/models/bindings/DebuggerWorkspaceBinding.ts +1 -1
- package/front_end/models/bindings/PresentationConsoleMessageHelper.ts +61 -25
- package/front_end/models/bindings/ResourceScriptMapping.ts +5 -7
- package/front_end/models/issues_manager/CookieIssue.ts +6 -127
- package/front_end/models/issues_manager/ElementAccessibilityIssue.ts +1 -1
- package/front_end/models/issues_manager/GenericIssue.ts +1 -1
- package/front_end/models/issues_manager/IssuesManager.ts +13 -6
- package/front_end/models/issues_manager/PartitioningBlobURLIssue.ts +1 -1
- package/front_end/models/issues_manager/SRIMessageSignatureIssue.ts +2 -2
- package/front_end/models/issues_manager/SourceFrameIssuesManager.ts +10 -3
- package/front_end/models/issues_manager/descriptions/CoepCorpNotSameOrigin.md +2 -2
- package/front_end/models/issues_manager/descriptions/CoepCorpNotSameOriginAfterDefaultedToSameOriginByCoep.md +3 -3
- package/front_end/models/issues_manager/descriptions/CoepCorpNotSameSite.md +2 -2
- package/front_end/models/issues_manager/descriptions/CoepFrameResourceNeedsCoepHeader.md +1 -1
- package/front_end/models/issues_manager/descriptions/CompatibilityModeQuirks.md +1 -1
- package/front_end/models/issues_manager/descriptions/CookieAttributeValueExceedsMaxSize.md +2 -2
- package/front_end/models/issues_manager/descriptions/LowTextContrast.md +1 -1
- package/front_end/models/issues_manager/descriptions/SameSiteNoneInsecureErrorRead.md +1 -1
- package/front_end/models/issues_manager/descriptions/SameSiteNoneInsecureErrorSet.md +1 -1
- package/front_end/models/issues_manager/descriptions/SameSiteNoneInsecureWarnRead.md +1 -1
- package/front_end/models/issues_manager/descriptions/SameSiteNoneInsecureWarnSet.md +1 -1
- package/front_end/models/issues_manager/descriptions/SameSiteUnspecifiedLaxAllowUnsafeRead.md +3 -3
- package/front_end/models/issues_manager/descriptions/SameSiteUnspecifiedLaxAllowUnsafeSet.md +3 -3
- package/front_end/models/issues_manager/descriptions/bounceTrackingMitigations.md +1 -1
- package/front_end/models/issues_manager/descriptions/connectionAllowlistInvalidAllowlistItemType.md +2 -2
- package/front_end/models/issues_manager/descriptions/connectionAllowlistInvalidHeader.md +2 -2
- package/front_end/models/issues_manager/descriptions/connectionAllowlistInvalidUrlPattern.md +3 -3
- package/front_end/models/issues_manager/descriptions/connectionAllowlistItemNotInnerList.md +2 -2
- package/front_end/models/issues_manager/descriptions/connectionAllowlistMoreThanOneList.md +2 -2
- package/front_end/models/issues_manager/descriptions/connectionAllowlistReportingEndpointNotToken.md +1 -1
- package/front_end/models/issues_manager/descriptions/cookieCrossSiteRedirectDowngrade.md +3 -3
- package/front_end/models/issues_manager/descriptions/cookieExcludeBlockedWithinRelatedWebsiteSet.md +1 -1
- package/front_end/models/issues_manager/descriptions/cookieExcludePortMismatch.md +1 -1
- package/front_end/models/issues_manager/descriptions/cookieExcludeSchemeMismatch.md +1 -1
- package/front_end/models/issues_manager/descriptions/cookieExcludeThirdPartyPhaseoutSet.md +1 -1
- package/front_end/models/issues_manager/descriptions/cookieWarnThirdPartyPhaseoutRead.md +1 -1
- package/front_end/models/issues_manager/descriptions/corsAllowCredentialsRequired.md +1 -1
- package/front_end/models/issues_manager/descriptions/corsDisabledScheme.md +2 -2
- package/front_end/models/issues_manager/descriptions/corsDisallowedByMode.md +2 -2
- package/front_end/models/issues_manager/descriptions/corsHeaderDisallowedByPreflightResponse.md +1 -1
- package/front_end/models/issues_manager/descriptions/corsInvalidHeaderValues.md +3 -3
- package/front_end/models/issues_manager/descriptions/corsLocalNetworkAccessPermissionDenied.md +1 -1
- package/front_end/models/issues_manager/descriptions/corsMethodDisallowedByPreflightResponse.md +1 -1
- package/front_end/models/issues_manager/descriptions/corsNoCorsRedirectModeNotFollow.md +1 -1
- package/front_end/models/issues_manager/descriptions/corsOriginMismatch.md +3 -3
- package/front_end/models/issues_manager/descriptions/corsPreflightResponseInvalid.md +2 -2
- package/front_end/models/issues_manager/descriptions/corsRedirectContainsCredentials.md +3 -3
- package/front_end/models/issues_manager/descriptions/corsWildcardOriginNotAllowed.md +4 -3
- package/front_end/models/issues_manager/descriptions/cspEvalViolation.md +4 -4
- package/front_end/models/issues_manager/descriptions/cspInlineViolation.md +2 -2
- package/front_end/models/issues_manager/descriptions/cspTrustedTypesPolicyViolation.md +2 -2
- package/front_end/models/issues_manager/descriptions/cspTrustedTypesSinkViolation.md +4 -4
- package/front_end/models/issues_manager/descriptions/cspURLViolation.md +4 -4
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestAccountsEmptyList.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestAccountsHttpNotFound.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestAccountsInvalidContentType.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestAccountsInvalidResponse.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestAccountsNoResponse.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestDnsFetchFailed.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestDnsInvalidRecord.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestEmailVerificationWellKnownHttpNotFound.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestEmailVerificationWellKnownInvalidContentType.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestEmailVerificationWellKnownInvalidResponse.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestEmailVerificationWellKnownNoResponse.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestInvalidEmail.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestJwksHttpNotFound.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestJwksInvalidResponse.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestKeyBindingSigningFailed.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestRpOriginIsOpaque.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenHttpNotFound.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenInvalidContentType.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenInvalidResponse.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenInvalidSdJwt.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenMalformedSdJwt.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenNoResponse.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenVerificationKbInvalidAudience.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenVerificationKbInvalidIssuedAt.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenVerificationKbInvalidNonce.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenVerificationKbInvalidSdHash.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenVerificationKbInvalidTyp.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenVerificationKbMissingAud.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenVerificationKbMissingCnf.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenVerificationKbMissingIat.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenVerificationKbMissingNonce.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenVerificationKbMissingSdHash.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenVerificationKbSignatureFailed.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenVerificationSdJwtInvalidEmail.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenVerificationSdJwtInvalidEmailVerified.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenVerificationSdJwtInvalidHolderKey.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenVerificationSdJwtInvalidIssuedAt.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenVerificationSdJwtInvalidIssuer.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenVerificationSdJwtJwksMissingKeys.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenVerificationSdJwtMissingCnf.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenVerificationSdJwtMissingEmail.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenVerificationSdJwtMissingIat.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenVerificationSdJwtMissingIss.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenVerificationSdJwtSignatureFailed.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenVerificationSdJwtUnsupportedHeaderAlg.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestUserLoggedOut.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestWellKnownAccountsEndpointCrossOrigin.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestWellKnownHttpNotFound.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestWellKnownInvalidContentType.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestWellKnownInvalidResponse.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestWellKnownIssuanceEndpointCrossOrigin.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestWellKnownListEmpty.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestWellKnownMissingAccountsEndpoint.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestWellKnownMissingIssuanceEndpoint.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestWellKnownNoResponse.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestWellKnownUnsupportedSigningAlgorithm.md +1 -1
- package/front_end/models/issues_manager/descriptions/federatedAuthRequestAccountsHttpNotFound.md +1 -1
- package/front_end/models/issues_manager/descriptions/federatedAuthRequestAccountsInvalidResponse.md +1 -1
- package/front_end/models/issues_manager/descriptions/federatedAuthRequestAccountsNoResponse.md +1 -1
- package/front_end/models/issues_manager/descriptions/federatedAuthRequestApprovalDeclined.md +1 -1
- package/front_end/models/issues_manager/descriptions/federatedAuthRequestCanceled.md +1 -1
- package/front_end/models/issues_manager/descriptions/federatedAuthRequestErrorFetchingSignin.md +1 -1
- package/front_end/models/issues_manager/descriptions/federatedAuthRequestErrorIdToken.md +1 -1
- package/front_end/models/issues_manager/descriptions/federatedAuthRequestIdTokenHttpNotFound.md +1 -1
- package/front_end/models/issues_manager/descriptions/federatedAuthRequestIdTokenInvalidRequest.md +1 -1
- package/front_end/models/issues_manager/descriptions/federatedAuthRequestIdTokenInvalidResponse.md +1 -1
- package/front_end/models/issues_manager/descriptions/federatedAuthRequestIdTokenNoResponse.md +1 -1
- package/front_end/models/issues_manager/descriptions/federatedAuthRequestInvalidSigninResponse.md +1 -1
- package/front_end/models/issues_manager/descriptions/federatedAuthRequestManifestHttpNotFound.md +1 -1
- package/front_end/models/issues_manager/descriptions/federatedAuthRequestManifestInvalidResponse.md +1 -1
- package/front_end/models/issues_manager/descriptions/federatedAuthRequestManifestNoResponse.md +1 -1
- package/front_end/models/issues_manager/descriptions/federatedAuthRequestTooManyRequests.md +1 -1
- package/front_end/models/issues_manager/descriptions/federatedAuthUserInfoRequestInvalidAccountsResponse.md +1 -1
- package/front_end/models/issues_manager/descriptions/federatedAuthUserInfoRequestInvalidConfigOrWellKnown.md +1 -1
- package/front_end/models/issues_manager/descriptions/federatedAuthUserInfoRequestNoAccountSharingPermission.md +1 -1
- package/front_end/models/issues_manager/descriptions/federatedAuthUserInfoRequestNoApiPermission.md +1 -1
- package/front_end/models/issues_manager/descriptions/federatedAuthUserInfoRequestNoReturningUserFromFetchedAccounts.md +1 -1
- package/front_end/models/issues_manager/descriptions/federatedAuthUserInfoRequestNotIframe.md +1 -1
- package/front_end/models/issues_manager/descriptions/federatedAuthUserInfoRequestNotPotentiallyTrustworthy.md +1 -1
- package/front_end/models/issues_manager/descriptions/federatedAuthUserInfoRequestNotSameOrigin.md +1 -1
- package/front_end/models/issues_manager/descriptions/federatedAuthUserInfoRequestNotSignedInWithIdp.md +1 -1
- package/front_end/models/issues_manager/descriptions/fetchingPartitionedBlobURL.md +2 -2
- package/front_end/models/issues_manager/descriptions/genericFormAriaLabelledByToNonExistingIdError.md +2 -2
- package/front_end/models/issues_manager/descriptions/genericFormAutocompleteAttributeEmptyError.md +1 -1
- package/front_end/models/issues_manager/descriptions/genericFormDuplicateIdForInputError.md +1 -1
- package/front_end/models/issues_manager/descriptions/genericFormEmptyIdAndNameAttributesForInputError.md +2 -2
- package/front_end/models/issues_manager/descriptions/genericFormInputAssignedAutocompleteValueToIdOrNameAttributeError.md +2 -2
- package/front_end/models/issues_manager/descriptions/genericFormInputHasWrongButWellIntendedAutocompleteValueError.md +1 -1
- package/front_end/models/issues_manager/descriptions/genericFormInputWithNoLabelError.md +1 -1
- package/front_end/models/issues_manager/descriptions/genericFormLabelForMatchesNonExistingIdError.md +2 -2
- package/front_end/models/issues_manager/descriptions/genericFormLabelForNameError.md +1 -1
- package/front_end/models/issues_manager/descriptions/genericFormLabelHasNeitherForNorNestedInputError.md +1 -1
- package/front_end/models/issues_manager/descriptions/genericFormModelContextMissingToolName.md +1 -1
- package/front_end/models/issues_manager/descriptions/genericFormModelContextParameterMissingName.md +1 -1
- package/front_end/models/issues_manager/descriptions/genericFormModelContextRequiredParameterMissingName.md +1 -1
- package/front_end/models/issues_manager/descriptions/genericNavigationEntryMarkedSkippable.md +2 -2
- package/front_end/models/issues_manager/descriptions/heavyAd.md +1 -1
- package/front_end/models/issues_manager/descriptions/lazyLoadImageZeroSize.md +1 -1
- package/front_end/models/issues_manager/descriptions/navigatingPartitionedBlobURL.md +3 -3
- package/front_end/models/issues_manager/descriptions/permissionElementActivationDisabled.md +1 -1
- package/front_end/models/issues_manager/descriptions/permissionElementActivationDisabledWithOccluder.md +1 -1
- package/front_end/models/issues_manager/descriptions/permissionElementActivationDisabledWithOccluderParent.md +1 -1
- package/front_end/models/issues_manager/descriptions/permissionElementFencedFrameDisallowed.md +2 -2
- package/front_end/models/issues_manager/descriptions/permissionElementFontSizeTooLarge.md +2 -2
- package/front_end/models/issues_manager/descriptions/permissionElementFontSizeTooSmall.md +2 -2
- package/front_end/models/issues_manager/descriptions/permissionElementInsetBoxShadowUnsupported.md +1 -1
- package/front_end/models/issues_manager/descriptions/permissionElementInvalidDisplayStyle.md +2 -2
- package/front_end/models/issues_manager/descriptions/permissionElementInvalidSizeValue.md +2 -2
- package/front_end/models/issues_manager/descriptions/permissionElementInvalidType.md +2 -2
- package/front_end/models/issues_manager/descriptions/permissionElementInvalidTypeActivation.md +2 -2
- package/front_end/models/issues_manager/descriptions/permissionElementNonOpaqueColor.md +1 -1
- package/front_end/models/issues_manager/descriptions/permissionElementPaddingBottomUnsupported.md +2 -2
- package/front_end/models/issues_manager/descriptions/permissionElementPaddingRightUnsupported.md +2 -2
- package/front_end/models/issues_manager/descriptions/permissionElementRequestInProgress.md +2 -2
- package/front_end/models/issues_manager/descriptions/permissionElementSecurityChecksFailed.md +1 -1
- package/front_end/models/issues_manager/descriptions/permissionElementTypeNotSupported.md +2 -2
- package/front_end/models/issues_manager/descriptions/permissionElementUntrustedEvent.md +1 -1
- package/front_end/models/issues_manager/descriptions/placeholderDescriptionForInvisibleIssues.md +1 -1
- package/front_end/models/issues_manager/descriptions/selectElementAccessibilityDisallowedOptGroupChild.md +1 -1
- package/front_end/models/issues_manager/descriptions/selectElementAccessibilityDisallowedSelectChild.md +1 -1
- package/front_end/models/issues_manager/descriptions/selectElementAccessibilityInteractiveContentAttributesSelectDescendant.md +1 -1
- package/front_end/models/issues_manager/descriptions/selectElementAccessibilityInteractiveContentLegendChild.md +1 -1
- package/front_end/models/issues_manager/descriptions/selectElementAccessibilityInteractiveContentOptionChild.md +1 -1
- package/front_end/models/issues_manager/descriptions/selectElementAccessibilityNonPhrasingContentOptionChild.md +1 -1
- package/front_end/models/issues_manager/descriptions/selectivePermissionsIntervention.md +3 -3
- package/front_end/models/issues_manager/descriptions/sharedArrayBuffer.md +1 -1
- package/front_end/models/issues_manager/descriptions/sharedDictionaryUseErrorCrossOriginNoCorsRequest.md +1 -1
- package/front_end/models/issues_manager/descriptions/sharedDictionaryUseErrorMatchingDictionaryNotUsed.md +1 -1
- package/front_end/models/issues_manager/descriptions/sharedDictionaryUseErrorUnexpectedContentDictionaryHeader.md +1 -1
- package/front_end/models/issues_manager/descriptions/sharedDictionaryWriteErrorCossOriginNoCorsRequest.md +1 -1
- package/front_end/models/issues_manager/descriptions/sharedDictionaryWriteErrorDisallowedBySettings.md +1 -1
- package/front_end/models/issues_manager/descriptions/sharedDictionaryWriteErrorExpiredResponse.md +1 -1
- package/front_end/models/issues_manager/descriptions/sharedDictionaryWriteErrorFeatureDisabled.md +2 -2
- package/front_end/models/issues_manager/descriptions/sharedDictionaryWriteErrorInvalidStructuredHeader.md +1 -1
- package/front_end/models/issues_manager/descriptions/sharedDictionaryWriteErrorNavigationRequest.md +2 -2
- package/front_end/models/issues_manager/descriptions/sriInvalidSignatureHeader.md +4 -4
- package/front_end/models/issues_manager/descriptions/sriInvalidSignatureInputHeader.md +4 -4
- package/front_end/models/issues_manager/descriptions/sriMissingSignatureHeader.md +1 -1
- package/front_end/models/issues_manager/descriptions/sriMissingSignatureInputHeader.md +2 -2
- package/front_end/models/issues_manager/descriptions/sriSignatureHeaderValueIsIncorrectLength.md +2 -2
- package/front_end/models/issues_manager/descriptions/sriSignatureHeaderValueIsNotByteSequence.md +4 -4
- package/front_end/models/issues_manager/descriptions/sriSignatureHeaderValueIsParameterized.md +4 -4
- package/front_end/models/issues_manager/descriptions/sriSignatureInputHeaderInvalidComponentName.md +1 -1
- package/front_end/models/issues_manager/descriptions/sriSignatureInputHeaderInvalidComponentType.md +2 -2
- package/front_end/models/issues_manager/descriptions/sriSignatureInputHeaderInvalidDerivedComponentParameter.md +1 -1
- package/front_end/models/issues_manager/descriptions/sriSignatureInputHeaderInvalidHeaderComponentParameter.md +1 -1
- package/front_end/models/issues_manager/descriptions/sriSignatureInputHeaderInvalidParameter.md +2 -2
- package/front_end/models/issues_manager/descriptions/sriSignatureInputHeaderKeyIdLength.md +5 -5
- package/front_end/models/issues_manager/descriptions/sriSignatureInputHeaderMissingLabel.md +3 -3
- package/front_end/models/issues_manager/descriptions/sriSignatureInputHeaderMissingRequiredParameters.md +2 -2
- package/front_end/models/issues_manager/descriptions/sriSignatureInputHeaderValueMissingComponents.md +2 -2
- package/front_end/models/issues_manager/descriptions/sriSignatureInputHeaderValueNotInnerList.md +2 -2
- package/front_end/models/issues_manager/descriptions/sriValidationFailedIntegrityMismatch.md +4 -4
- package/front_end/models/issues_manager/descriptions/sriValidationFailedInvalidLength.md +3 -3
- package/front_end/models/issues_manager/descriptions/sriValidationFailedSignatureExpired.md +2 -2
- package/front_end/models/issues_manager/descriptions/sriValidationFailedSignatureMismatch.md +2 -2
- package/front_end/models/issues_manager/descriptions/stylesheetLateImport.md +1 -1
- package/front_end/models/issues_manager/descriptions/summaryElementAccessibilityInteractiveContentSummaryDescendant.md +1 -1
- package/front_end/models/issues_manager/descriptions/unencodedDigestIncorrectDigestLength.md +2 -2
- package/front_end/models/issues_manager/descriptions/unencodedDigestIncorrectDigestType.md +3 -3
- package/front_end/models/issues_manager/descriptions/unencodedDigestMalformedDictionary.md +2 -2
- package/front_end/models/issues_manager/descriptions/unencodedDigestUnknownAlgorithm.md +1 -1
- package/front_end/models/issues_manager/issues_manager.ts +0 -2
- package/front_end/models/live-metrics/LiveMetrics.ts +22 -5
- package/front_end/models/live-metrics/web-vitals-injected/rollup.config.mjs +1 -1
- package/front_end/models/live-metrics/web-vitals-injected/spec/spec.ts +10 -4
- package/front_end/models/persistence/AutomaticFileSystemWorkspaceBinding.ts +2 -2
- package/front_end/models/persistence/IsolatedFileSystem.ts +1 -1
- package/front_end/models/persistence/IsolatedFileSystemManager.ts +1 -1
- package/front_end/models/stack_trace/StackTraceModel.ts +1 -1
- package/front_end/models/trace/handlers/ExtensionTraceDataHandler.ts +1 -1
- package/front_end/models/trace/helpers/SamplesIntegrator.ts +1 -1
- package/front_end/models/trace/helpers/Timing.ts +1 -1
- package/front_end/models/trace/insights/Common.ts +1 -1
- package/front_end/models/trace/insights/DocumentLatency.ts +3 -3
- package/front_end/models/trace/insights/LCPDiscovery.ts +1 -1
- package/front_end/models/trace/insights/ModernHTTP.ts +1 -1
- package/front_end/models/workspace_diff/WorkspaceDiff.ts +2 -2
- package/front_end/panels/ai_assistance/AiAssistancePanel.ts +2 -15
- package/front_end/panels/ai_assistance/ai_assistance.ts +0 -2
- package/front_end/panels/ai_assistance/components/ChatInput.ts +2 -2
- package/front_end/panels/ai_assistance/components/ChatMessage.ts +2 -18
- package/front_end/panels/ai_assistance/components/ChatView.ts +2 -35
- package/front_end/panels/ai_assistance/components/DisabledWidget.ts +1 -1
- package/front_end/panels/ai_assistance/components/ExploreWidget.ts +4 -4
- package/front_end/panels/ai_assistance/components/WalkthroughView.ts +2 -2
- package/front_end/panels/animation/AnimationGroupPreviewUI.ts +28 -29
- package/front_end/panels/animation/AnimationTimeline.ts +3 -3
- package/front_end/panels/application/AppManifestView.ts +1 -1
- package/front_end/panels/application/ApplicationPanelSidebar.ts +1 -1
- package/front_end/panels/application/CookieItemsView.ts +1 -1
- package/front_end/panels/application/CrashReportContextView.ts +3 -3
- package/front_end/panels/application/DOMStorageItemsView.ts +1 -2
- package/front_end/panels/application/DeviceBoundSessionsModel.ts +1 -1
- package/front_end/panels/application/DeviceBoundSessionsTreeElement.ts +1 -1
- package/front_end/panels/application/DeviceBoundSessionsView.ts +1 -1
- package/front_end/panels/application/IndexedDBViews.ts +1 -1
- package/front_end/panels/application/KeyValueStorageItemsView.ts +13 -1
- package/front_end/panels/application/OriginTrialTreeView.ts +1 -1
- package/front_end/panels/application/ServiceWorkersView.ts +6 -6
- package/front_end/panels/application/StorageBucketsTreeElement.ts +1 -1
- package/front_end/panels/application/StorageItemsToolbar.ts +3 -3
- package/front_end/panels/application/WebMCPView.ts +7 -5
- package/front_end/panels/application/components/AdsView.ts +21 -6
- package/front_end/panels/application/components/BackForwardCacheView.ts +2 -2
- package/front_end/panels/application/components/ProtocolHandlersView.ts +1 -1
- package/front_end/panels/application/components/StorageMetadataView.ts +1 -1
- package/front_end/panels/application/preloading/components/MismatchedPreloadingGrid.ts +2 -2
- package/front_end/panels/application/preloading/components/PreloadingDetailsReportView.ts +2 -1
- package/front_end/panels/application/preloading/components/PreloadingString.ts +3 -3
- package/front_end/panels/application/preloading/components/UsedPreloadingView.ts +2 -1
- package/front_end/panels/autofill/AutofillView.ts +1 -1
- package/front_end/panels/browser_debugger/DOMBreakpointsSidebarPane.ts +1 -1
- package/front_end/panels/browser_debugger/XHRBreakpointsSidebarPane.ts +2 -2
- package/front_end/panels/changes/ChangesSidebar.ts +1 -1
- package/front_end/panels/changes/ChangesView.ts +1 -1
- package/front_end/panels/changes/CombinedDiffView.ts +1 -1
- package/front_end/panels/common/AiCodeCompletionTeaser.ts +1 -1
- package/front_end/panels/common/AiCodeGenerationTeaser.ts +3 -3
- package/front_end/panels/common/BadgeNotification.ts +8 -8
- package/front_end/panels/common/DOMLinkifier.ts +1 -1
- package/front_end/panels/common/GdpSignUpDialog.ts +2 -2
- package/front_end/panels/common/GeminiRebrandPromoDialog.ts +1 -1
- package/front_end/panels/console/ConsoleInsightTeaser.ts +1 -1
- package/front_end/panels/console/ConsolePinPane.ts +3 -3
- package/front_end/panels/console/ConsolePrompt.ts +3 -3
- package/front_end/panels/console/ConsoleSidebar.ts +8 -10
- package/front_end/panels/console_counters/WarningErrorCounter.ts +10 -11
- package/front_end/panels/coverage/CoverageView.ts +2 -2
- package/front_end/panels/css_overview/CSSOverviewCompletedView.ts +3 -3
- package/front_end/panels/css_overview/CSSOverviewSidebarPanel.ts +1 -1
- package/front_end/panels/developer_resources/DeveloperResourcesView.ts +1 -1
- package/front_end/panels/elements/CSSRuleValidator.ts +1 -1
- package/front_end/panels/elements/ComputedStyleWidget.ts +3 -2
- package/front_end/panels/elements/ElementsTreeElement.ts +3 -3
- package/front_end/panels/elements/EventListenersWidget.ts +1 -3
- package/front_end/panels/elements/LayoutPane.ts +4 -4
- package/front_end/panels/elements/StandaloneStylesContainer.ts +7 -7
- package/front_end/panels/elements/StylePropertiesSection.ts +25 -9
- package/front_end/panels/elements/StylePropertyTreeElement.ts +5 -5
- package/front_end/panels/elements/StylesAiCodeCompletionProvider.ts +6 -6
- package/front_end/panels/elements/StylesSidebarPane.ts +52 -3
- package/front_end/panels/elements/elements-meta.ts +18 -2
- package/front_end/panels/emulation/DeviceModeToolbar.ts +8 -9
- package/front_end/panels/emulation/DeviceModeView.ts +289 -164
- package/front_end/panels/emulation/MediaQueryInspector.ts +12 -8
- package/front_end/panels/emulation/deviceModeView.css +1 -0
- package/front_end/panels/event_listeners/EventListenersView.ts +4 -4
- package/front_end/panels/explain/components/ConsoleInsight.ts +8 -9
- package/front_end/panels/explain/explain-meta.ts +3 -3
- package/front_end/panels/layer_viewer/LayerTreeOutline.ts +135 -167
- package/front_end/panels/layer_viewer/Layers3DView.ts +10 -23
- package/front_end/panels/layer_viewer/layer_viewer-meta.ts +27 -0
- package/front_end/panels/lighthouse/LighthouseController.ts +44 -60
- package/front_end/panels/lighthouse/LighthousePanel.ts +9 -9
- package/front_end/panels/lighthouse/LighthouseReportSelector.ts +2 -2
- package/front_end/panels/lighthouse/LighthouseStartView.ts +9 -12
- package/front_end/panels/lighthouse/LighthouseStatusView.ts +33 -33
- package/front_end/panels/lighthouse/RadioSetting.ts +1 -1
- package/front_end/panels/lighthouse/lighthouse-meta.ts +131 -1
- package/front_end/panels/media/EventDisplayTable.ts +67 -94
- package/front_end/panels/media/PlayerListView.ts +1 -1
- package/front_end/panels/media/eventDisplayTable.css +9 -4
- package/front_end/panels/mobile_throttling/NetworkThrottlingSelector.ts +5 -5
- package/front_end/panels/mobile_throttling/ThrottlingSettingsTab.ts +1 -1
- package/front_end/panels/network/EventSourceMessagesView.ts +98 -107
- package/front_end/panels/network/NetworkWaterfallColumn.ts +1 -1
- package/front_end/panels/network/RequestConditionsDrawer.ts +2 -2
- package/front_end/panels/network/RequestCookiesView.ts +2 -2
- package/front_end/panels/network/RequestHeadersView.ts +5 -5
- package/front_end/panels/network/RequestPayloadView.ts +4 -4
- package/front_end/panels/network/RequestTimingView.ts +2 -2
- package/front_end/panels/network/components/DirectSocketConnectionView.ts +1 -1
- package/front_end/panels/network/eventSourceMessagesView.css +12 -3
- package/front_end/panels/performance_monitor/PerformanceMonitor.ts +1 -1
- package/front_end/panels/profiler/BottomUpProfileDataGrid.ts +25 -25
- package/front_end/panels/profiler/HeapProfileView.ts +280 -239
- package/front_end/panels/profiler/HeapSnapshotDataGrids.ts +13 -3
- package/front_end/panels/profiler/HeapSnapshotView.ts +30 -10
- package/front_end/panels/profiler/HeapTimelineOverview.ts +5 -2
- package/front_end/panels/profiler/ProfileDataGrid.ts +128 -157
- package/front_end/panels/profiler/ProfileFlameChartDataProvider.ts +17 -5
- package/front_end/panels/profiler/ProfilesPanel.ts +2 -2
- package/front_end/panels/profiler/TopDownProfileDataGrid.ts +17 -17
- package/front_end/panels/protocol_monitor/ProtocolMonitor.ts +2 -2
- package/front_end/panels/recorder/CreateRecordingView.ts +4 -4
- package/front_end/panels/recorder/RecorderPanel.ts +6 -6
- package/front_end/panels/recorder/RecordingView.ts +1 -1
- package/front_end/panels/recorder/ReplaySection.ts +1 -1
- package/front_end/panels/recorder/StepView.ts +1 -1
- package/front_end/panels/recorder/injected/rollup.config.mjs +1 -1
- package/front_end/panels/search/SearchView.ts +1 -1
- package/front_end/panels/security/SecurityPanel.ts +54 -41
- package/front_end/panels/sensors/LocationsSettingsTab.ts +1 -1
- package/front_end/panels/sensors/SensorsView.ts +1 -1
- package/front_end/panels/settings/AISettingsTab.ts +11 -10
- package/front_end/panels/settings/emulation/components/UserAgentClientHintsForm.ts +2 -2
- package/front_end/panels/sources/AiCodeCompletionPlugin.ts +5 -5
- package/front_end/panels/sources/BreakpointEditDialog.ts +2 -2
- package/front_end/panels/sources/BreakpointsView.ts +1 -1
- package/front_end/panels/sources/CallStackSidebarPane.ts +2 -2
- package/front_end/panels/sources/DebuggerPausedMessage.ts +2 -2
- package/front_end/panels/sources/DebuggerPlugin.ts +19 -19
- package/front_end/panels/sources/WatchExpressionsSidebarPane.ts +4 -4
- package/front_end/panels/sources/breakpointEditDialog.css +2 -2
- package/front_end/panels/sources/sources-meta.ts +1 -1
- package/front_end/panels/timeline/CountersGraph.ts +1 -2
- package/front_end/panels/timeline/ExtensionTrackAppender.ts +1 -1
- package/front_end/panels/timeline/TimelineDetailsView.ts +2 -2
- package/front_end/panels/timeline/TimelineFlameChartDataProvider.ts +2 -2
- package/front_end/panels/timeline/TimelineFlameChartView.ts +4 -4
- package/front_end/panels/timeline/TimelinePaintProfilerView.ts +1 -1
- package/front_end/panels/timeline/TimelinePanel.ts +53 -81
- package/front_end/panels/timeline/TimelineSelectorStatsView.ts +10 -3
- package/front_end/panels/timeline/TimelineUIUtils.ts +16 -2
- package/front_end/panels/timeline/TrackConfigBanner.ts +1 -1
- package/front_end/panels/timeline/components/ExportTraceOptions.ts +1 -1
- package/front_end/panels/timeline/components/LayoutShiftDetails.ts +8 -9
- package/front_end/panels/timeline/components/NetworkRequestTooltip.ts +1 -1
- package/front_end/panels/timeline/components/TimelineRangeSummaryView.ts +1 -1
- package/front_end/panels/timeline/components/insights/DuplicatedJavaScript.ts +2 -2
- package/front_end/panels/timeline/components/insights/LCPBreakdown.ts +1 -1
- package/front_end/panels/timeline/components/insights/LegacyJavaScript.ts +1 -1
- package/front_end/panels/timeline/components/insights/SlowCSSSelector.ts +2 -2
- package/front_end/panels/timeline/overlays/OverlaysImpl.ts +5 -0
- package/front_end/panels/timeline/overlays/components/TimespanBreakdownOverlay.ts +13 -8
- package/front_end/panels/timeline/overlays/components/timespanBreakdownOverlay.css +1 -0
- package/front_end/panels/timeline/timeline-meta.ts +169 -0
- package/front_end/panels/timeline/timelineFlameChartView.css +5 -0
- package/front_end/panels/webauthn/WebauthnPane.ts +1 -1
- package/front_end/panels/whats_new/ReleaseNoteText.ts +1 -1
- package/front_end/third_party/chromium/README.chromium +1 -1
- package/front_end/third_party/web-vitals/README.chromium +2 -2
- package/front_end/third_party/web-vitals/package/README.md +120 -19
- package/front_end/third_party/web-vitals/package/attribution.d.ts +16 -0
- package/front_end/third_party/web-vitals/package/attribution.js +18 -0
- package/front_end/third_party/web-vitals/package/dist/modules/attribution/onCLS.d.ts +1 -1
- package/front_end/third_party/web-vitals/package/dist/modules/attribution/onFCP.d.ts +1 -7
- package/front_end/third_party/web-vitals/package/dist/modules/attribution/onFCP.js +53 -32
- package/front_end/third_party/web-vitals/package/dist/modules/attribution/onINP.d.ts +2 -2
- package/front_end/third_party/web-vitals/package/dist/modules/attribution/onINP.js +43 -12
- package/front_end/third_party/web-vitals/package/dist/modules/attribution/onLCP.d.ts +1 -1
- package/front_end/third_party/web-vitals/package/dist/modules/attribution/onLCP.js +21 -3
- package/front_end/third_party/web-vitals/package/dist/modules/attribution/onTTFB.d.ts +1 -1
- package/front_end/third_party/web-vitals/package/dist/modules/attribution/onTTFB.js +30 -24
- package/front_end/third_party/web-vitals/package/dist/modules/lib/FCPEntryManager.d.ts +3 -0
- package/front_end/third_party/web-vitals/package/dist/modules/lib/FCPEntryManager.js +18 -0
- package/front_end/third_party/web-vitals/package/dist/modules/lib/InteractionManager.d.ts +2 -1
- package/front_end/third_party/web-vitals/package/dist/modules/lib/InteractionManager.js +18 -2
- package/front_end/third_party/web-vitals/package/dist/modules/lib/LCPEntryManager.d.ts +1 -0
- package/front_end/third_party/web-vitals/package/dist/modules/lib/LCPEntryManager.js +1 -0
- package/front_end/third_party/web-vitals/package/dist/modules/lib/bindReporter.d.ts +1 -1
- package/front_end/third_party/web-vitals/package/dist/modules/lib/generateUniqueID.js +1 -1
- package/front_end/third_party/web-vitals/package/dist/modules/lib/getLoadState.d.ts +1 -1
- package/front_end/third_party/web-vitals/package/dist/modules/lib/getLoadState.js +7 -7
- package/front_end/third_party/web-vitals/package/dist/modules/lib/getSelector.js +1 -1
- package/front_end/third_party/web-vitals/package/dist/modules/lib/getVisibilityWatcher.d.ts +1 -1
- package/front_end/third_party/web-vitals/package/dist/modules/lib/getVisibilityWatcher.js +4 -1
- package/front_end/third_party/web-vitals/package/dist/modules/lib/initMetric.d.ts +7 -3
- package/front_end/third_party/web-vitals/package/dist/modules/lib/initMetric.js +20 -11
- package/front_end/third_party/web-vitals/package/dist/modules/lib/initUnique.js +8 -3
- package/front_end/third_party/web-vitals/package/dist/modules/lib/observe.d.ts +3 -1
- package/front_end/third_party/web-vitals/package/dist/modules/lib/observe.js +19 -4
- package/front_end/third_party/web-vitals/package/dist/modules/lib/polyfills/interactionCountPolyfill.js +1 -1
- package/front_end/third_party/web-vitals/package/dist/modules/lib/softNavs.d.ts +3 -0
- package/front_end/third_party/web-vitals/package/dist/modules/lib/softNavs.js +38 -0
- package/front_end/third_party/web-vitals/package/dist/modules/lib/whenIdleOrHidden.js +5 -1
- package/front_end/third_party/web-vitals/package/dist/modules/onCLS.d.ts +1 -1
- package/front_end/third_party/web-vitals/package/dist/modules/onCLS.js +30 -11
- package/front_end/third_party/web-vitals/package/dist/modules/onFCP.d.ts +1 -1
- package/front_end/third_party/web-vitals/package/dist/modules/onFCP.js +36 -4
- package/front_end/third_party/web-vitals/package/dist/modules/onINP.d.ts +1 -1
- package/front_end/third_party/web-vitals/package/dist/modules/onINP.js +42 -22
- package/front_end/third_party/web-vitals/package/dist/modules/onLCP.d.ts +1 -1
- package/front_end/third_party/web-vitals/package/dist/modules/onLCP.js +109 -30
- package/front_end/third_party/web-vitals/package/dist/modules/onTTFB.d.ts +1 -1
- package/front_end/third_party/web-vitals/package/dist/modules/onTTFB.js +25 -7
- package/front_end/third_party/web-vitals/package/dist/modules/types/base.d.ts +24 -1
- package/front_end/third_party/web-vitals/package/dist/modules/types/fcp.d.ts +1 -1
- package/front_end/third_party/web-vitals/package/dist/modules/types/inp.d.ts +14 -6
- package/front_end/third_party/web-vitals/package/dist/modules/types/lcp.d.ts +1 -1
- package/front_end/third_party/web-vitals/package/dist/modules/types/ttfb.d.ts +2 -2
- package/front_end/third_party/web-vitals/package/dist/modules/types.d.ts +26 -4
- package/front_end/third_party/web-vitals/package/package.json +21 -22
- package/front_end/third_party/web-vitals/package/src/attribution/onCLS.ts +1 -1
- package/front_end/third_party/web-vitals/package/src/attribution/onFCP.ts +62 -39
- package/front_end/third_party/web-vitals/package/src/attribution/onINP.ts +52 -15
- package/front_end/third_party/web-vitals/package/src/attribution/onLCP.ts +25 -7
- package/front_end/third_party/web-vitals/package/src/attribution/onTTFB.ts +43 -37
- package/front_end/third_party/web-vitals/package/src/lib/{polyfills/getFirstHiddenTimePolyfill.ts → FCPEntryManager.ts} +4 -14
- package/front_end/third_party/web-vitals/package/src/lib/InteractionManager.ts +22 -2
- package/front_end/third_party/web-vitals/package/src/lib/LCPEntryManager.ts +1 -0
- package/front_end/third_party/web-vitals/package/src/lib/bindReporter.ts +1 -1
- package/front_end/third_party/web-vitals/package/src/lib/generateUniqueID.ts +1 -1
- package/front_end/third_party/web-vitals/package/src/lib/getLoadState.ts +11 -12
- package/front_end/third_party/web-vitals/package/src/lib/getSelector.ts +1 -1
- package/front_end/third_party/web-vitals/package/src/lib/getVisibilityWatcher.ts +4 -1
- package/front_end/third_party/web-vitals/package/src/lib/initMetric.ts +24 -11
- package/front_end/third_party/web-vitals/package/src/lib/initUnique.ts +12 -4
- package/front_end/third_party/web-vitals/package/src/lib/observe.ts +26 -5
- package/front_end/third_party/web-vitals/package/src/lib/polyfills/interactionCountPolyfill.ts +1 -1
- package/front_end/third_party/web-vitals/package/src/lib/softNavs.ts +48 -0
- package/front_end/third_party/web-vitals/package/src/lib/whenIdleOrHidden.ts +12 -4
- package/front_end/third_party/web-vitals/package/src/onCLS.ts +75 -18
- package/front_end/third_party/web-vitals/package/src/onFCP.ts +66 -7
- package/front_end/third_party/web-vitals/package/src/onINP.ts +100 -39
- package/front_end/third_party/web-vitals/package/src/onLCP.ts +169 -34
- package/front_end/third_party/web-vitals/package/src/onTTFB.ts +50 -13
- package/front_end/third_party/web-vitals/package/src/types/base.ts +31 -10
- package/front_end/third_party/web-vitals/package/src/types/fcp.ts +1 -1
- package/front_end/third_party/web-vitals/package/src/types/inp.ts +14 -6
- package/front_end/third_party/web-vitals/package/src/types/lcp.ts +1 -1
- package/front_end/third_party/web-vitals/package/src/types/ttfb.ts +2 -2
- package/front_end/third_party/web-vitals/package/src/types.ts +32 -9
- package/front_end/third_party/web-vitals/patches/0001-Add-onEachInteraction-to-onINP-options.patch +11 -11
- package/front_end/third_party/web-vitals/rebuild.sh +2 -2
- package/front_end/third_party/web-vitals/web-vitals-tsconfig.json +2 -0
- package/front_end/ui/components/buttons/Button.ts +16 -0
- package/front_end/ui/components/dialogs/Dialog.ts +1 -1
- package/front_end/ui/components/highlighting/highlighting.ts +1 -1
- package/front_end/ui/components/icon_button/FileSourceIcon.ts +1 -1
- package/front_end/ui/components/linkifier/LinkifierImpl.ts +1 -1
- package/front_end/ui/components/markdown_view/MarkdownLinksMap.ts +2 -2
- package/front_end/ui/components/text_editor/AiCodeCompletionProvider.ts +2 -2
- package/front_end/ui/components/text_editor/AiCodeGenerationProvider.ts +7 -8
- package/front_end/ui/components/tooltips/Tooltip.ts +1 -1
- package/front_end/ui/legacy/ContextMenu.ts +12 -2
- package/front_end/ui/legacy/ListControl.ts +1 -1
- package/front_end/ui/legacy/SelectMenu.docs.ts +17 -19
- package/front_end/ui/legacy/Treeoutline.ts +1 -1
- package/front_end/ui/legacy/components/data_grid/DataGrid.ts +1 -1
- package/front_end/ui/legacy/components/data_grid/DataGridElement.ts +26 -3
- package/front_end/ui/legacy/components/perf_ui/ChartViewport.ts +4 -4
- package/front_end/ui/legacy/components/perf_ui/FlameChart.ts +8 -7
- package/front_end/ui/legacy/components/quick_open/QuickOpen.ts +1 -1
- package/front_end/ui/legacy/components/settings_ui/SettingsUI.ts +1 -1
- package/front_end/ui/legacy/components/source_frame/SourceFrame.ts +4 -4
- package/front_end/ui/legacy/components/utils/Linkifier.ts +5 -1
- package/front_end/ui/lit/render.ts +1 -1
- package/front_end/ui/visual_logging/KnownContextValues.ts +8 -0
- package/front_end/ui/visual_logging/LoggingEvents.ts +1 -1
- package/inspector_overlay/main.ts +1 -1
- package/mcp/mcp.ts +4 -4
- package/package.json +10 -11
- package/front_end/models/ai_assistance/AgentProject.ts +0 -261
- package/front_end/models/ai_assistance/agents/PatchAgent.ts +0 -306
- package/front_end/models/issues_manager/CheckFormsIssuesTrigger.ts +0 -45
- package/front_end/models/issues_manager/descriptions/SameSiteExcludeContextDowngradeRead.md +0 -8
- package/front_end/models/issues_manager/descriptions/SameSiteExcludeContextDowngradeSet.md +0 -8
- package/front_end/models/issues_manager/descriptions/SameSiteExcludeNavigationContextDowngrade.md +0 -8
- package/front_end/models/issues_manager/descriptions/SameSiteWarnCrossDowngradeRead.md +0 -8
- package/front_end/models/issues_manager/descriptions/SameSiteWarnCrossDowngradeSet.md +0 -8
- package/front_end/models/issues_manager/descriptions/SameSiteWarnStrictLaxDowngradeStrict.md +0 -8
- package/front_end/models/text_utils/text_utils.ts +0 -5
- package/front_end/panels/ai_assistance/PatchWidget.ts +0 -867
- package/front_end/panels/ai_assistance/SelectWorkspaceDialog.ts +0 -368
- package/front_end/panels/ai_assistance/selectWorkspaceDialog.css +0 -92
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: devtools-testing-guidance
|
|
3
|
+
description: Guidance on selecting the appropriate test suite (Unit, API, or E2E tests) when writing new tests in Chrome DevTools. MUST be used when writing new tests.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Testing Guidance
|
|
7
|
+
|
|
8
|
+
This guide outlines when and how to select the appropriate test suite when writing new tests in Chrome DevTools.
|
|
9
|
+
|
|
10
|
+
> [!NOTE]
|
|
11
|
+
> This skill provides guidance on **which** test suite to choose when writing tests. To learn **how** to run tests, build targets, or execute linters, refer to the `devtools-verification` skill.
|
|
12
|
+
|
|
13
|
+
## Choosing a Test Suite
|
|
14
|
+
|
|
15
|
+
### 1. Unit Tests
|
|
16
|
+
|
|
17
|
+
**Default choice:** The vast majority of tests in DevTools should be unit tests.
|
|
18
|
+
|
|
19
|
+
Use unit tests for isolated testing of individual functions, classes, models, helpers, and UI components.
|
|
20
|
+
|
|
21
|
+
- **Utilities & Framework:**
|
|
22
|
+
- Use `TestUniverse` (and foundation test helpers) for easy, isolated setup of required dependencies and models.
|
|
23
|
+
- For testing UI widgets, use stubbed view functions and screenshot assertions rather than spinning up heavy DOM/browser infrastructure.
|
|
24
|
+
- **Location:** Co-located next to their implementation files (e.g. `TimelinePanel.ts` and `TimelinePanel.test.ts`).
|
|
25
|
+
- **BUILD.gn**: test file should be added to `devtools_ui_module("unittests")` or `devtools_foundation_module("foundation_unittests")` target in the corresponding `BUILD.gn` file.
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
### 2. API Tests
|
|
30
|
+
|
|
31
|
+
Use API tests for integration tests that verify business logic requiring more complex setups or extensive CDP (Chrome DevTools Protocol) traffic, without needing the full DevTools frontend UI.
|
|
32
|
+
|
|
33
|
+
- **When to use:**
|
|
34
|
+
- Evaluating JavaScript expressions in the target page (e.g. via `Runtime.evaluate`).
|
|
35
|
+
- Complex source map setups and symbolization.
|
|
36
|
+
- Multi-context or target setups (workers, iframes, OOPIFs).
|
|
37
|
+
- Tests that require extensive CDP mock setup.
|
|
38
|
+
- Verifying the "foundational layer" of DevTools models against a real browser/web page.
|
|
39
|
+
- **Location:** Defined in `front_end/` with `.test.api.ts` extension (e.g. `Universe.test.api.ts`).
|
|
40
|
+
- **BUILD.gn**: test file should be added to `devtools_api_test_module("api_tests")` target in the corresponding `BUILD.gn` file.
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
### 3. End-to-End (E2E) Tests
|
|
45
|
+
|
|
46
|
+
Use E2E tests to verify real end-to-end user stories and user journeys.
|
|
47
|
+
|
|
48
|
+
- **When to use:**
|
|
49
|
+
- Verifying full user journeys across DevTools panels and drawers.
|
|
50
|
+
- Complex UI behaviors that require extensive user interaction setup and benefit from a complete DevTools frontend page connected to an inspected target page over CDP.
|
|
51
|
+
- **Location:** Defined in `test/e2e/` (e.g. `test/e2e/console/console-log.test.ts`).
|
|
52
|
+
- **BUILD.gn**: test file should be added to `ts_e2e_library(ts_e2e_library)` target in the corresponding `BUILD.gn` file. And `node_ts_library` in `test/e2e/BUILD.gn` for its dependencies.
|
|
@@ -52,7 +52,7 @@ Locate all TypeScript files in the target folder that define `const UIStrings =
|
|
|
52
52
|
* *Check sibling references:* If you change a setting name or label (for example, changing “Preserve log” to “Keep log”), search sibling files in the folder for explanatory text or status strings that reference the old name in quotes (for example, “console.clear() was prevented due to ‘Preserve log’”), and update them to match.
|
|
53
53
|
2. **Cut unnecessary words:** Eliminate politeness (`please`, `sorry`), filler (`very`, `strongly`, `there is` or `there are`), and marketing fluff (`seamless`, `awesome`, `fast`, `quick`).
|
|
54
54
|
3. **Contractions:** Use contractions (`don’t`, `can’t`, `isn’t`, `won’t`) instead of formal spellings (`do not`, `cannot`, `is not`, `will not`).
|
|
55
|
-
4. **Curly apostrophes, quotation marks, and ellipses:** Use curly apostrophes (`’`) in user-facing `UIStrings` values for contractions and possessives, and
|
|
55
|
+
4. **Curly apostrophes, quotation marks, and ellipses:** Use curly apostrophes (`’`) in user-facing `UIStrings` values for contractions and possessives. Double quotes should be straight (`"`) to avoid usability issues when users want to copy string literals, though consider not using double quotes at all where not necessary. Note that using both double quotes and backticks (for example, `"`Permissions-Policy`"`) is valid and useful when a fixed term needs to be visually enclosed in quotes in the UI, as backticks are used for localization locking and are often not rendered visually. Use the ellipsis character (`…`) instead of three periods (`...`). Use prime (`′`) and double prime (`″`) symbols as needed for measurements like length or coordinates.
|
|
56
56
|
5. **Sentence case and capitalization:** Use sentence case for headings, labels, and UI element names. Capitalize only the first word, proper nouns, product names (`Chrome DevTools`), and web APIs (`Background Fetch API`).
|
|
57
57
|
* Don’t capitalize feature names (for example, `conditional breakpoint` or `command menu`).
|
|
58
58
|
* Capitalize panel names and UX elements that are named after panels (for example, `Show Application`, `Toggle Console`, `Console sidebar`, or `Styles`).
|
|
@@ -1,59 +1,59 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: migrate-chromium-test
|
|
3
|
-
description: Use when migrating Chromium layout tests to DevTools unit tests
|
|
3
|
+
description: Use when migrating Chromium layout tests to DevTools unit tests or API tests.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
## Workflow
|
|
7
7
|
|
|
8
|
-
1.
|
|
8
|
+
### 1. Identify the Test to Move
|
|
9
9
|
|
|
10
10
|
- You should have already received the issue ID, the test title, and the exact local paths of the downloaded legacy test file (`.js`) and its expectation file (`-expected.txt`) in your initial prompt.
|
|
11
11
|
- Refer to these local copies as you write the new modern test.
|
|
12
12
|
|
|
13
|
-
2.
|
|
13
|
+
### 2. Determine Target Location & Test Suite Type
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
- Place the new test file next to the file being tested, following the naming convention `[FileName].test.ts`.
|
|
17
|
-
- Example: If testing `ui/legacy/components/data_grid/DataGrid.ts`, the test should be `ui/legacy/components/data_grid/DataGrid.test.ts`.
|
|
15
|
+
Investigate what files are being tested, start location should be `front_end/`.Consult the `devtools-testing-guidance` skill to select the appropriate test suite.
|
|
18
16
|
|
|
19
|
-
3.
|
|
17
|
+
### 3. Convert the Test Content
|
|
20
18
|
|
|
21
|
-
-
|
|
22
|
-
-
|
|
23
|
-
-
|
|
24
|
-
-
|
|
25
|
-
-
|
|
26
|
-
-
|
|
27
|
-
-
|
|
28
|
-
-
|
|
29
|
-
- **
|
|
19
|
+
- **Testing Style:** Rewrite legacy `TestRunner` calls into modern Mocha (`describe`, `it`) and Chai assertions (`assert.strictEqual`, `assert.isTrue`, `assert.deepEqual`, `assert.isNotNull`, `assert.instanceOf`).
|
|
20
|
+
- **Import Conventions:** Strictly follow the `devtools-imports` skill:
|
|
21
|
+
- Import cross-module code via module entrypoints (e.g., `import * as Module from '../module/module.js'`).
|
|
22
|
+
- Always use `import * as` for cross-module imports.
|
|
23
|
+
- TypeScript imports in DevTools **must** use `.js` file extensions (e.g., `./data_grid.js`).
|
|
24
|
+
- **Environment & Setup Selection:**
|
|
25
|
+
- **Foundation / Non-UI Tests:** Follow the `foundation-test-migration` skill. Use `TestUniverse` and setup hooks (`setupLocaleHooks()`, `setupSettingsHooks()`, `setupRuntimeHooks()`) instead of DOM-heavy singletons or `describeWithEnvironment`. Use `universe.createTarget()` and `MockCDPConnection` for CDP mocking.
|
|
26
|
+
- **UI & Widget Tests:** Follow the `devtools-ui-widgets` skill. Use `renderElementIntoDOM` from `front_end/testing/DOMHelpers.js` for mounting elements, or `createViewFunctionStub` and `view.nextInput` from `front_end/testing/ViewFunctionHelpers.js` for testing MVP widgets.
|
|
27
|
+
- **Code Comments:**
|
|
28
|
+
- Must be full sentences ending with a period (except when the entire comment is a URL).
|
|
29
|
+
- Do **not** include comments like `// Replaces web test: http/tests/devtools/...`. Since migrated web tests are deleted, these references become stale.
|
|
30
|
+
- **Accessing Private Members & Events:** Avoid calling private methods or accessing internal tokens. Test public APIs or trigger behavior by dispatching standard DOM/SDK events instead.
|
|
30
31
|
|
|
31
|
-
4.
|
|
32
|
+
### 4. Update BUILD.gn Configuration
|
|
32
33
|
|
|
33
|
-
|
|
34
|
+
Every newly created test file must be added to the appropriate target in its folder's `BUILD.gn`:
|
|
34
35
|
|
|
35
|
-
|
|
36
|
+
> [!IMPORTANT]
|
|
37
|
+
> If you omit the test file from `BUILD.gn`, the test target will not be compiled by Ninja and will be skipped by test runners.
|
|
36
38
|
|
|
37
|
-
|
|
38
|
-
- Ensure the test passes.
|
|
39
|
+
### 5. Verify the Changes
|
|
39
40
|
|
|
40
|
-
|
|
41
|
+
Use the `devtools-verification` skill to build and verify your changes.
|
|
41
42
|
|
|
42
|
-
|
|
43
|
-
- If the newly added test does not test any logic from the component but just the getters from the mocked data explain to the user that this test does not add value and it's better to close it without adding the test. Provide a command without executing it to close the issue as "Fixed".
|
|
44
|
-
- If the newly added test uses too extensive mocks of CDP objects and methods explain to the user that the test should be foundation e2e test instead of unit test and we won't migrate it. **CRITICAL** upload a comment to the issue with your investigation and the reason why you won't submit a CL and close the issue as "Won't Fix (Infeasible)" and add the issue to the hotlist with ID 8687901.
|
|
43
|
+
### 6. Evaluate Test Completeness and Utility
|
|
45
44
|
|
|
46
|
-
|
|
45
|
+
- Critically review the newly created test to ensure it provides meaningful coverage. Cross-reference it with the original Chromium layout test to verify that all original behaviors, edge cases, and assertions have been fully migrated.
|
|
46
|
+
- If the newly added test does not test any logic from the component but only tests getters from mocked data, explain to the user that this test does not add value and it is better to close it without adding the test. Provide a command without executing it to close the issue as "Fixed".
|
|
47
47
|
|
|
48
|
-
|
|
48
|
+
### 7. Upload the CL
|
|
49
49
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
50
|
+
Follow the `version-control` skill when uploading CLs.
|
|
51
|
+
Follow the following format and constraints:
|
|
52
|
+
- **Title line:** `[test-migration] Migrate <short test name> test to unit test`
|
|
53
|
+
- **Body:** `This CL migrates the legacy layout test <long test name> to a unit test in <new test name>. <optional additional explanation>`
|
|
54
|
+
- **Body appendix:** `https://crsrc.org/c/third_party/blink/web_tests/<long test name>;drc=4d51e9cab50efd0f8029c45a486e199a1d519fd1`
|
|
55
|
+
- **Bug line:** `Fixed: <issue number>`
|
|
56
|
+
- **Line Length Constraint:** Wrap all lines in the commit message to a maximum of 72 characters per line.
|
|
57
57
|
|
|
58
58
|
Example commit message:
|
|
59
59
|
|
|
@@ -71,11 +71,14 @@ https://crsrc.org/c/third_party/blink/web_tests/http/tests/devtools/console/cons
|
|
|
71
71
|
Fixed: <issue number>
|
|
72
72
|
```
|
|
73
73
|
|
|
74
|
-
Use the `version-control` skill to upload the CL.
|
|
75
74
|
|
|
76
|
-
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## Conversion Examples
|
|
78
|
+
|
|
79
|
+
### Example 1: UI Unit Test (`DataGrid.test.ts`)
|
|
77
80
|
|
|
78
|
-
|
|
81
|
+
#### Legacy Test (`datagrid-editable-longtext.js`)
|
|
79
82
|
|
|
80
83
|
```javascript
|
|
81
84
|
import {TestRunner} from 'test_runner';
|
|
@@ -90,31 +93,43 @@ import * as DataGrid from 'devtools/ui/legacy/components/data_grid/data_grid.js'
|
|
|
90
93
|
})();
|
|
91
94
|
```
|
|
92
95
|
|
|
93
|
-
|
|
96
|
+
#### Converted UI Test (`DataGrid.test.ts`)
|
|
94
97
|
|
|
95
98
|
```typescript
|
|
96
|
-
import * as DataGrid from './data_grid.js';
|
|
97
99
|
import {renderElementIntoDOM} from '../../../../testing/DOMHelpers.js';
|
|
98
100
|
import {describeWithEnvironment} from '../../../../testing/EnvironmentHelpers.js';
|
|
101
|
+
import * as DataGrid from './data_grid.js';
|
|
99
102
|
|
|
100
103
|
describeWithEnvironment('DataGrid', () => {
|
|
101
104
|
it('tests long text in datagrid', () => {
|
|
102
105
|
// ... setup grid ...
|
|
103
|
-
|
|
106
|
+
const grid = new DataGrid.DataGrid.DataGridImpl({...});
|
|
107
|
+
renderElementIntoDOM(grid.element);
|
|
108
|
+
|
|
109
|
+
// Use Chai assertions instead of printing results.
|
|
104
110
|
assert.strictEqual(keyElement.textContent.length, 1500);
|
|
105
111
|
});
|
|
106
112
|
});
|
|
107
113
|
```
|
|
108
114
|
|
|
115
|
+
---
|
|
116
|
+
|
|
109
117
|
## Tips & Troubleshooting
|
|
110
118
|
|
|
111
|
-
- **TypeScript Type Mismatches
|
|
112
|
-
- **Accessing Private Methods
|
|
113
|
-
- **
|
|
114
|
-
-
|
|
115
|
-
-
|
|
116
|
-
-
|
|
119
|
+
- **TypeScript Type Mismatches:** Legacy tests often use plain strings for properties that now require branded types like `LocalizedString`. You can bypass this in tests by casting (`as DataGrid.DataGrid.ColumnDescriptor[]`) or by using `i18n.i18n.lockedString` where appropriate.
|
|
120
|
+
- **Accessing Private Methods:** Legacy tests frequently called private methods (e.g., `dataGrid.update()`). Look for public alternatives (e.g., `updateInstantly()`) or trigger the behavior by dispatching standard DOM/SDK events (e.g., `element.dispatchEvent(new Event('scroll'))`).
|
|
121
|
+
- **Domain Test Helpers in `front_end/testing/`:** Check existing helper utilities before writing custom boilerplate:
|
|
122
|
+
- `DOMHelpers.ts`: `renderElementIntoDOM`, `dispatchAndAwait`.
|
|
123
|
+
- `ViewFunctionHelpers.ts`: `createViewFunctionStub`, `view.nextInput` (for MVP widget tests).
|
|
124
|
+
- `MockCDPConnection.ts`: Scoped protocol mocking.
|
|
125
|
+
- `SourceMapHelpers.ts`, `TraceHelpers.ts`, `ConsoleHelpers.ts`, `SettingsHelpers.ts` etc.
|
|
126
|
+
- **Async Rendering:** If component values fail to update immediately during tests, wait for the next rendering frame using `raf()` from `front_end/testing/DOMHelpers.js`.
|
|
127
|
+
- **Recursive Expansion Limits:** Methods like `TreeElement.expandRecursively()` have default depth limits (e.g. 3). Pass a higher max depth argument if your test requires deeper tree expansion: `expandRecursively(10)`.
|
|
128
|
+
- **Mocking Complex Objects:** Look for existing mock helpers in related test files (e.g., `createDeepRemoteObjectMock` in `ObjectPropertiesSection.test.ts`) instead of instantiating real objects from scratch.
|
|
129
|
+
- **Ignoring Infrastructure Log Warnings:** In some local environments, test runs may print leak messages (e.g., `WebFrame LEAKED`) or `Corp Airlock` warnings. Always inspect the summary line at the end of the test log for `TOTAL: X SUCCESS` to confirm if test logic passed.
|
|
130
|
+
|
|
131
|
+
---
|
|
117
132
|
|
|
118
|
-
## After
|
|
133
|
+
## After Finishing the Migration
|
|
119
134
|
|
|
120
|
-
If you encountered any novel issues, workarounds, or helpful tips during the migration that are not already documented, please
|
|
135
|
+
If you encountered any novel issues, workarounds, or helpful tips during the migration that are not already documented, please inform the user so the skill documentation can be further updated.
|
|
@@ -43,10 +43,13 @@ existing element containers.
|
|
|
43
43
|
```
|
|
44
44
|
|
|
45
45
|
4. **Modern Component Mapping**:
|
|
46
|
-
|
|
47
|
-
* Refer to [ui_engineering.md](../../../docs/ui_engineering.md) for
|
|
48
|
-
specific migration examples.
|
|
46
|
+
* **MANDATORY**: You **MUST** read and load [ui_engineering.md](../../../docs/ui_engineering.md) first to understand specific component mappings (e.g., Toolbar vs `devtools-toolbar`). Do not assume standard Lit defaults.
|
|
49
47
|
* If unsure, also consult the [automatic migration code](../../../scripts/eslint_rules/lib/no-imperative-dom-api.ts)
|
|
48
|
+
* **Prefer Component Built-Ins Over Legacy Boilerplate**: Before porting
|
|
49
|
+
legacy event handlers, comparators, or state variables, check if the
|
|
50
|
+
modern component handles them natively. Drop host-level workarounds in
|
|
51
|
+
favor of declarative component attributes.
|
|
52
|
+
|
|
50
53
|
|
|
51
54
|
5. **Local Modular Renders**:
|
|
52
55
|
|
|
@@ -70,6 +73,7 @@ existing element containers.
|
|
|
70
73
|
* Do not attempt to rewrite complex historical subsystems (like Linkifiers
|
|
71
74
|
or specialized UI utilities) to be "pure Lit" during this pass.
|
|
72
75
|
* Capitalize on Lit's ability to interpolate standard `HTMLElement` or `Element` instances directly. Treat unmigrated utilities as "black boxes" that generate DOM, and embed their output in standard template expressions: `html`<div>${this.legacyElement}</div>``.
|
|
76
|
+
* **CRITICAL:** Before treating any component as "unmigrated," you MUST follow steps in Section 4. You are only allowed to use this escape hatch if no declarative migration instructions exist.
|
|
73
77
|
|
|
74
78
|
8. **Handle Asynchronous DOM Updates**:
|
|
75
79
|
|
|
@@ -87,9 +91,10 @@ existing element containers.
|
|
|
87
91
|
functions inside the class scope returning `LitTemplate`. This avoids
|
|
88
92
|
monoliths, preserves readability, and reuses template cache strategies.
|
|
89
93
|
|
|
90
|
-
10. **Visual Parity and Accessibility**:
|
|
94
|
+
10. **Visual Parity, CSS Adaptation, and Accessibility**:
|
|
91
95
|
|
|
92
96
|
* **Zero-Tolerance Regression**: Screenshot tests are the ground truth for this phase. Any visual diff (above 0%) in the generated screenshots is unacceptable and must be resolved before proceeding.
|
|
97
|
+
* **CSS Selector Migration**: When replacing legacy imperative components/widgets with modern web components (e.g., replacing legacy `DataGrid` with `<devtools-data-grid>`), inspect and update the associated `.css` file. Replace legacy class selectors (`.data-grid`) with tag selectors (`devtools-data-grid`).
|
|
93
98
|
* **Strict Tag/Class Parity**: Do not change tag types (e.g., `span` to
|
|
94
99
|
`div`) or drop class names during template translation, as CSS may
|
|
95
100
|
depend on them.
|
|
@@ -118,5 +123,15 @@ existing element containers.
|
|
|
118
123
|
|
|
119
124
|
13. **Wait for confirmation**:
|
|
120
125
|
|
|
121
|
-
* Wait for an explicit confirmation from the user before proceeding to the
|
|
122
|
-
|
|
126
|
+
* Wait for an explicit confirmation from the user (or Parent Orchestrator Agent) before proceeding to the next step.
|
|
127
|
+
|
|
128
|
+
--------------------------------------------------------------------------------
|
|
129
|
+
|
|
130
|
+
## 🔍 Mental Audit (Internal Self-Correction)
|
|
131
|
+
|
|
132
|
+
*Before reporting back or committing, re-read the instructions and verify:*
|
|
133
|
+
1. ❓ **Tag Parity**: Did I accidentally change any `span` to `div` (or vice versa)?
|
|
134
|
+
2. ❓ **Attribute Drop**: Did I drop any `aria-*`, `role`, or custom data attributes?
|
|
135
|
+
3. ❓ **Clang-Off Boundary**: Is the template wrapped in `// clang-format off`?
|
|
136
|
+
4. ❓ **Build**: Does the code compile and do visual tests pass with 0% diff?
|
|
137
|
+
|
|
@@ -78,5 +78,14 @@ consolidating them into private helper methods with explicit data contracts.
|
|
|
78
78
|
|
|
79
79
|
6. **Wait for confirmation**:
|
|
80
80
|
|
|
81
|
-
* Wait for an explicit confirmation from the user before proceeding to the
|
|
82
|
-
|
|
81
|
+
* Wait for an explicit confirmation from the user (or Parent Orchestrator Agent) before proceeding to the next step.
|
|
82
|
+
|
|
83
|
+
--------------------------------------------------------------------------------
|
|
84
|
+
|
|
85
|
+
## 🔍 Mental Audit (Internal Self-Correction)
|
|
86
|
+
|
|
87
|
+
*Before reporting back or committing, re-read the instructions and verify:*
|
|
88
|
+
1. ❓ **Minimal Diffs**: Did I move code blocks around unnecessarily?
|
|
89
|
+
2. ❓ **State Completeness**: Are all imperative DOM updates now backed by state variables?
|
|
90
|
+
3. ❓ **Build**: Does the code still compile?
|
|
91
|
+
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ui-eng-vision-orchestrator
|
|
3
3
|
description: High-level orchestrator for managing multi-pass migration of Chrome DevTools legacy components to the modern UI engineering vision (UI.Widget & Lit-html).
|
|
4
|
-
allowed-tools: code_search open_urls search_changelists data_analysis import_skill close_skill
|
|
4
|
+
allowed-tools: code_search open_urls search_changelists data_analysis import_skill close_skill invoke_subagent send_message
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# UI Engineering Vision Orchestrator: Meta-Skill Instructions
|
|
@@ -14,6 +14,16 @@ small, testable, and highly reviewable.
|
|
|
14
14
|
Refer to [ui_engineering.md](../../../docs/ui_engineering.md) for general
|
|
15
15
|
principles.
|
|
16
16
|
|
|
17
|
+
--------------------------------------------------------------------------------
|
|
18
|
+
|
|
19
|
+
## 🛑 Critical Constraints & Forbidden Actions
|
|
20
|
+
|
|
21
|
+
1. **NEVER Break the Build**: Code must compile and tests must pass at all steps. If you change a class API or method signature, you **MUST** update its usage in the same CL to maintain stability.
|
|
22
|
+
2. **Strict Intermediate Stability**: Do not leave the code in a broken state between passes.
|
|
23
|
+
3. **No Beautification of Adjacent Code**: Do NOT fix unrelated typos, formatting issues, or lint warnings in code you aren't actively migrating.
|
|
24
|
+
4. **No Monolithic Refactors**: Do NOT batch Lit conversion and Widget Promotion in the same pass. Keep CLs small and focused.
|
|
25
|
+
|
|
26
|
+
|
|
17
27
|
--------------------------------------------------------------------------------
|
|
18
28
|
|
|
19
29
|
## 1. Migration Philosophy & Plan-Validate-Execute Pattern
|
|
@@ -48,8 +58,8 @@ principles.
|
|
|
48
58
|
converting imperative DOM to Lit-html) with base class refactoring in the
|
|
49
59
|
same diff.
|
|
50
60
|
8. **Strict Intermediate Stability**: The code must compile and work correctly,
|
|
51
|
-
and all tests must pass after each step.
|
|
52
|
-
|
|
61
|
+
and all tests must pass after each step. You **MUST** update usages if you
|
|
62
|
+
change APIs.
|
|
53
63
|
9. **Establish Comprehensive Guardrails First**: Ensure both **logic tests**
|
|
54
64
|
(verifying presenter interactions and state updates) and **screenshot
|
|
55
65
|
tests** (verifying layout/styling) exist before rewriting code. If coverage
|
|
@@ -62,6 +72,11 @@ principles.
|
|
|
62
72
|
roughly 300 lines of code. If a step is predicted to be too complex, break
|
|
63
73
|
it down into smaller substeps. The agent must stop and report back after
|
|
64
74
|
each step or substep to allow verification.
|
|
75
|
+
12. **Context Hygiene via Subagents**: To keep the main conversation context
|
|
76
|
+
clean and focused on high-level orchestration, prefer delegating intense
|
|
77
|
+
execution tasks (like running tests, debugging compilations, or processing
|
|
78
|
+
independent classes in parallel) to specialized subagents.
|
|
79
|
+
|
|
65
80
|
|
|
66
81
|
--------------------------------------------------------------------------------
|
|
67
82
|
|
|
@@ -96,16 +111,38 @@ principles.
|
|
|
96
111
|
DOM construction. Converting the layout to declarative Lit templates
|
|
97
112
|
first (using temporary inline or local state) makes it much easier
|
|
98
113
|
to isolate and group the remaining state updates afterward.
|
|
99
|
-
5. Generate a `migration_plan.md`
|
|
100
|
-
the target steps.
|
|
114
|
+
5. Generate a `migration_plan.md` using the **Structured Plan Template** below.
|
|
101
115
|
6. Halt execution and print the formatted plan in Markdown to the chat.
|
|
102
116
|
Wait for user approval.
|
|
103
117
|
|
|
118
|
+
### 📝 Structured Plan Template
|
|
119
|
+
The plan you generate **MUST** follow this structure:
|
|
120
|
+
|
|
121
|
+
```markdown
|
|
122
|
+
# Migration Plan: [FileName.ts]
|
|
123
|
+
|
|
124
|
+
## 📊 Current State
|
|
125
|
+
- **Hybrid File**: [Yes/No]
|
|
126
|
+
- **Classes Found**: [ClassA, ClassB]
|
|
127
|
+
- **Strategy Selection**: [Option A (Logic First) | Option B (Tech First)]
|
|
128
|
+
|
|
129
|
+
## 🛠️ Passes Checklist
|
|
130
|
+
- [ ] **Pass 0: Baseline & Safety Scaffolding**
|
|
131
|
+
- Assigned to: `ui-eng-vision-test-scaffolder`
|
|
132
|
+
- [ ] **Pass 1: Logic Consolidation**
|
|
133
|
+
- Assigned to: `ui-eng-vision-logic-consolidator`
|
|
134
|
+
- [ ] **Pass 2: Lit-HTML Rendering**
|
|
135
|
+
- Assigned to: `ui-eng-vision-local-lit-renderer`
|
|
136
|
+
- [ ] **Pass 3: Widget Promotion**
|
|
137
|
+
- Assigned to: `ui-eng-vision-widget-promoter`
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
|
|
104
141
|
### Baseline & Safety Scaffolding
|
|
105
142
|
|
|
106
143
|
* **Trigger Condition**: User explicitly says "I accept the plan" or
|
|
107
144
|
equivalent.
|
|
108
|
-
* **Subskill to Import**: `ui-eng-vision-test-scaffolder`
|
|
145
|
+
* **Subskill to Import/Delegate**: `ui-eng-vision-test-scaffolder` (Delegate to a subagent to encapsulate verbose test logs)
|
|
109
146
|
* **Actions**:
|
|
110
147
|
1. Verify existing test coverage. Propose and add missing **logic tests**
|
|
111
148
|
for interactions and **screenshot tests** for visual validation to avoid
|
|
@@ -116,7 +153,7 @@ principles.
|
|
|
116
153
|
|
|
117
154
|
* **Trigger Condition**: Baseline tests green (or respective previous pass
|
|
118
155
|
staged).
|
|
119
|
-
* **Subskill to Import**: `ui-eng-vision-logic-consolidator`
|
|
156
|
+
* **Subskill to Import/Delegate**: `ui-eng-vision-logic-consolidator` (Delegate to a subagent to maintain focus)
|
|
120
157
|
* **Actions**:
|
|
121
158
|
1. Extract manual elements, constructor DOM configurations, and imperative
|
|
122
159
|
updates into private update helper methods with structured
|
|
@@ -125,7 +162,7 @@ principles.
|
|
|
125
162
|
### Local Lit-HTML Rendering (Technology Migration)
|
|
126
163
|
|
|
127
164
|
* **Trigger Condition**: Previous pass staged.
|
|
128
|
-
* **Subskill to Import**: `ui-eng-vision-local-lit-renderer`
|
|
165
|
+
* **Subskill to Import/Delegate**: `ui-eng-vision-local-lit-renderer` (Delegate to a subagent for isolated template generation)
|
|
129
166
|
* **Actions**:
|
|
130
167
|
1. Migrate imperative elements to declarative templates (using component
|
|
131
168
|
mapping rules defined inside the subskill) and render them locally
|
|
@@ -135,7 +172,7 @@ principles.
|
|
|
135
172
|
|
|
136
173
|
* **Trigger Condition**: Both local template rendering and logic consolidation
|
|
137
174
|
staged.
|
|
138
|
-
* **Subskill to Import**: `ui-eng-vision-widget-promoter`
|
|
175
|
+
* **Subskill to Import/Delegate**: `ui-eng-vision-widget-promoter` (Delegate to a subagent for final architectural cleanup)
|
|
139
176
|
* **Actions**:
|
|
140
177
|
1. Promote view classes to modern `UI.Widget` classes, hook up
|
|
141
178
|
`performUpdate()` delegates, export the default view layout, and clean
|
|
@@ -57,7 +57,7 @@ logical regressions are introduced during modernization.
|
|
|
57
57
|
|
|
58
58
|
4. **Wait for confirmation**:
|
|
59
59
|
|
|
60
|
-
* Wait for an explicit confirmation from the user before proceeding to the next step.
|
|
60
|
+
* Wait for an explicit confirmation from the user (or Parent Orchestrator Agent) before proceeding to the next step.
|
|
61
61
|
|
|
62
62
|
--------------------------------------------------------------------------------
|
|
63
63
|
|
|
@@ -123,3 +123,22 @@ Always detect the execution environment first to run tests successfully:
|
|
|
123
123
|
```bash
|
|
124
124
|
npm run build
|
|
125
125
|
```
|
|
126
|
+
|
|
127
|
+
### Scenario D: Screenshot Test Fails (Visual Diffs > 0%)
|
|
128
|
+
|
|
129
|
+
* **Symptom**: The test runs but fails with a percentage difference in visual regression.
|
|
130
|
+
* **Resolution Steps**:
|
|
131
|
+
1. Do **NOT** ask the user to accept the new screenshot yet.
|
|
132
|
+
2. Inspect the failure log to see if it is a **layout shift** or a **missing style**.
|
|
133
|
+
3. If it's a layout shift, check if you replaced a block element with an inline element (e.g. `div` -> `span`).
|
|
134
|
+
4. If styles are missing, verify if the test wrapper needs `{includeCommonStyles: true}`.
|
|
135
|
+
|
|
136
|
+
--------------------------------------------------------------------------------
|
|
137
|
+
|
|
138
|
+
## 🔍 Mental Audit (Internal Self-Correction)
|
|
139
|
+
|
|
140
|
+
*Before reporting back or committing, re-read the instructions and verify:*
|
|
141
|
+
1. ❓ **Coverage**: Did I cover all classes in the file, or only the main one?
|
|
142
|
+
2. ❓ **Stability**: Can the tests run repeatedly without flakiness?
|
|
143
|
+
3. ❓ **Integrations**: Did I verify that the component mounts correctly?
|
|
144
|
+
|
|
@@ -14,6 +14,8 @@ clean `UI.Widget` classes that use native update rendering delegates.
|
|
|
14
14
|
|
|
15
15
|
## 1. Widget Promotion Guidelines
|
|
16
16
|
|
|
17
|
+
* **Widget Framework Rules**: Follow the rules defined in [`devtools-ui-widgets`](../ui-widgets/SKILL.md).
|
|
18
|
+
|
|
17
19
|
1. **Change Class Inheritance**:
|
|
18
20
|
|
|
19
21
|
* Rewrite class declarations to extend `UI.Widget` (or specialized
|
|
@@ -74,3 +76,12 @@ clean `UI.Widget` classes that use native update rendering delegates.
|
|
|
74
76
|
* **Minimal Code Movement**: When migrating, try to move code around as little as possible, in particular around the lit rendering helpers. This minimizes the git diff and improves reviewability.
|
|
75
77
|
|
|
76
78
|
--------------------------------------------------------------------------------
|
|
79
|
+
|
|
80
|
+
## 🔍 Mental Audit (Internal Self-Correction)
|
|
81
|
+
|
|
82
|
+
*Before reporting back or committing, re-read the instructions and verify:*
|
|
83
|
+
1. ❓ **Decoupling**: Did I remove all direct `.element` or `.contentElement` couplings from instantiator files?
|
|
84
|
+
2. ❓ **Inheritance**: Does the class now cleanly inherit from `UI.Widget` or its variants?
|
|
85
|
+
3. ❓ **Injectability**: Is the view injectable in the constructor?
|
|
86
|
+
4. ❓ **Build**: Does the code compile and do tests pass?
|
|
87
|
+
|
package/eslint.config.mjs
CHANGED
|
@@ -103,6 +103,7 @@ export default defineConfig([
|
|
|
103
103
|
'@stylistic/semi': 'error',
|
|
104
104
|
'@stylistic/no-extra-semi': 'error',
|
|
105
105
|
'@stylistic/comma-style': ['error', 'last'],
|
|
106
|
+
'@stylistic/comma-dangle': ['error', 'always-multiline'],
|
|
106
107
|
'@stylistic/wrap-iife': ['error', 'inside'],
|
|
107
108
|
|
|
108
109
|
'@stylistic/spaced-comment': [
|
|
@@ -719,6 +720,13 @@ export default defineConfig([
|
|
|
719
720
|
'no-console': 'off',
|
|
720
721
|
},
|
|
721
722
|
},
|
|
723
|
+
{
|
|
724
|
+
name: 'API test files',
|
|
725
|
+
files: ['**/*.test.api.ts'],
|
|
726
|
+
rules: {
|
|
727
|
+
'@devtools/no-api-test-unit-helpers': 'error',
|
|
728
|
+
},
|
|
729
|
+
},
|
|
722
730
|
{
|
|
723
731
|
name: 'TypeScript test files',
|
|
724
732
|
files: [
|
package/front_end/Tests.js
CHANGED
|
@@ -850,7 +850,7 @@
|
|
|
850
850
|
'LenVOavSot+3i9DAgBkcRcAtjOj4LaR0VknFBbVPFd5uRHg5h6h+u/N5GJG7' +
|
|
851
851
|
'9G+dwfCMNYxdAfvDbbnvRG15RjF+Cv6pgsH/76tuIMRQyV+dTZsXjAzlAcmg' +
|
|
852
852
|
'QWpzU/qlULRuJQ/7TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq' +
|
|
853
|
-
'/H5COEBkEveegeGTLg=='
|
|
853
|
+
'/H5COEBkEveegeGTLg==',
|
|
854
854
|
]);
|
|
855
855
|
};
|
|
856
856
|
|
|
@@ -901,22 +901,21 @@
|
|
|
901
901
|
step1();
|
|
902
902
|
|
|
903
903
|
function step1() {
|
|
904
|
-
testPreset(
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
904
|
+
testPreset(MobileThrottling.networkPresets[3],
|
|
905
|
+
[
|
|
906
|
+
'offline event: online = false',
|
|
907
|
+
'connection change event: type = none; downlinkMax = 0; effectiveType = 4g',
|
|
908
|
+
],
|
|
909
|
+
step2);
|
|
910
910
|
}
|
|
911
911
|
|
|
912
912
|
function step2() {
|
|
913
|
-
testPreset(
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
step3);
|
|
913
|
+
testPreset(MobileThrottling.networkPresets[2],
|
|
914
|
+
[
|
|
915
|
+
'online event: online = true',
|
|
916
|
+
'connection change event: type = cellular; downlinkMax = 0.3814697265625; effectiveType = 2g',
|
|
917
|
+
],
|
|
918
|
+
step3);
|
|
920
919
|
}
|
|
921
920
|
|
|
922
921
|
function step3() {
|
|
@@ -1311,14 +1310,14 @@
|
|
|
1311
1310
|
await SDK.TargetManager.TargetManager.instance().primaryPageTarget()?.runtimeAgent().invoke_evaluate({
|
|
1312
1311
|
expression: `fetch("/set-cookie?devtools-test-cookie=Bar",
|
|
1313
1312
|
{credentials: 'include'})`,
|
|
1314
|
-
awaitPromise: true
|
|
1313
|
+
awaitPromise: true,
|
|
1315
1314
|
});
|
|
1316
1315
|
await testCase(baseURL + 'echoheader?Cookie', undefined, 200, ['cache-control'], 'devtools-test-cookie=Bar');
|
|
1317
1316
|
|
|
1318
1317
|
await SDK.TargetManager.TargetManager.instance().primaryPageTarget()?.runtimeAgent().invoke_evaluate({
|
|
1319
1318
|
expression: `fetch("/set-cookie?devtools-test-cookie=same-site-cookie;SameSite=Lax",
|
|
1320
1319
|
{credentials: 'include'})`,
|
|
1321
|
-
awaitPromise: true
|
|
1320
|
+
awaitPromise: true,
|
|
1322
1321
|
});
|
|
1323
1322
|
await testCase(
|
|
1324
1323
|
baseURL + 'echoheader?Cookie', undefined, 200, ['cache-control'], 'devtools-test-cookie=same-site-cookie');
|
|
@@ -78,7 +78,7 @@ async function gzipCodec(
|
|
|
78
78
|
start(controller) {
|
|
79
79
|
controller.enqueue(buffer instanceof ArrayBuffer ? new Uint8Array(buffer) : buffer);
|
|
80
80
|
controller.close();
|
|
81
|
-
}
|
|
81
|
+
},
|
|
82
82
|
});
|
|
83
83
|
const codecReadable = readable.pipeThrough(codecStream);
|
|
84
84
|
// A response is a convenient way to get an ArrayBuffer from a ReadableStream.
|
|
@@ -104,7 +104,7 @@ export function createMonitoredStream(stream: ReadableStream, onProgress: (bytes
|
|
|
104
104
|
bytesRead += chunk.byteLength;
|
|
105
105
|
onProgress(bytesRead);
|
|
106
106
|
controller.enqueue(chunk);
|
|
107
|
-
}
|
|
107
|
+
},
|
|
108
108
|
});
|
|
109
109
|
|
|
110
110
|
return stream.pipeThrough(progressTransformer);
|