feat(help): enforce owner-aware high-risk contexts
Module Package Release / publish-packages (push) Successful in 13s
Module Package Release / publish-packages (push) Successful in 13s
This commit is contained in:
@@ -4,6 +4,7 @@ function assert(condition: unknown, message = "assertion failed"): asserts condi
|
||||
|
||||
import { renderToStaticMarkup } from "react-dom/server";
|
||||
import PasswordField from "../src/components/PasswordField";
|
||||
import PasswordGeneratorDialog from "../src/components/PasswordGeneratorDialog";
|
||||
import {
|
||||
DEFAULT_PASSWORD_GENERATOR_OPTIONS,
|
||||
generateSecurePassword,
|
||||
@@ -56,11 +57,27 @@ for (const [options, expected] of [
|
||||
|
||||
const markup = renderToStaticMarkup(
|
||||
<PlatformLanguageProvider>
|
||||
<PasswordField value="" onValueChange={() => undefined} generator />
|
||||
<PasswordField value="" onValueChange={() => undefined} generator helpContextId="access.authentication.password" helpModuleId="access" />
|
||||
</PlatformLanguageProvider>
|
||||
);
|
||||
assert(markup.includes('aria-label="Generate password"'), "the opt-in generator action is accessible");
|
||||
assert(markup.includes("lucide-dice-5"), "the familiar generator icon is used");
|
||||
assert(!markup.includes("password-generator-dialog"), "the generator dialog stays closed until explicitly requested");
|
||||
assert(markup.includes('data-help-context-id="access.authentication.password"'), "the owner context reaches the password field and its actions");
|
||||
assert(markup.includes('data-help-module-id="access"'), "the password field retains its documentation owner");
|
||||
|
||||
const dialogMarkup = renderToStaticMarkup(
|
||||
<PlatformLanguageProvider>
|
||||
<PasswordGeneratorDialog
|
||||
open
|
||||
helpContextId="access.authentication.password"
|
||||
helpModuleId="access"
|
||||
onUse={() => undefined}
|
||||
onClose={() => undefined}
|
||||
/>
|
||||
</PlatformLanguageProvider>
|
||||
);
|
||||
assert(dialogMarkup.includes('data-help-context-id="access.authentication.password"'), "the generator dialog inherits the calling credential context");
|
||||
assert(dialogMarkup.includes('data-help-module-id="access"'), "generated-password controls retain the credential owner's module");
|
||||
|
||||
console.log("Password generator contract passed.");
|
||||
|
||||
Reference in New Issue
Block a user