mirror of
https://github.com/goauthentik/authentik.git
synced 2026-06-17 19:09:11 +03:00
1c82199852
* web/table: fetch on first render when already visible Tables inside `<ak-modal>` rendered empty until the user clicked the refresh button. The 2026.5 RC native-`<dialog>` migration taught `AKModal.updated()` to force `visible = true` on its slotted child, but `Table.firstUpdated()` was delegating to `#synchronizeRefreshSchedule()`, which only flushes a *previously deferred* refresh. With visibility forced on before the first update cycle, no deferred refresh was ever queued, so the synchronizer no-op'd and nothing fetched. Switch the first-update hook to call `fetch()` directly. `fetch()` already handles both states correctly: if the table is visible it issues the request immediately, and if it isn't it queues the deferred refresh that the synchronizer flushes when visibility flips on. Beyond the modal case this also covers any future caller that mounts a Table already-visible. Reproduced and verified against the user-library RAC endpoint launcher (the surface from the beta report). Added a Playwright e2e (`rac-launch-modal.test.ts`) that seeds a RAC provider + two endpoints via the API, opens the launcher, and asserts the endpoint rows appear without a manual refresh — fails on `main`, passes with this change. A 2026.5 backport will follow as a separate PR. Co-Authored-By: Agent (authentik-m-triage-rac-proper-shared-lilac) <279763771+playpen-agent@users.noreply.github.com> * web/test: silence cspell on AK_TEST_BOOTSTRAP_TOKEN fallback `changeme` in the playpen-specific default for `AK_TEST_BOOTSTRAP_TOKEN` trips the spellcheck lint job. Add an inline `cspell:ignore` directive so the fallback can stay (CI sets the env var so the default is only used locally inside playpen sandboxes). * Flesh out RAC test coverage. * Use simple search for applications list. * Add order. * Ignore playwright result. * Remove unused. * Tidy for test. * Fix test selectors. * Fix overlap. * Defer to connected callback. * Use consistent Patternfly input outline. * Clean up labels. * Only trigger navigation on non-current entries. * Ensure that selected type is retained. --------- Co-authored-by: Agent (authentik-m-triage-rac-proper-shared-lilac) <279763771+playpen-agent@users.noreply.github.com>
38 lines
1.0 KiB
TypeScript
38 lines
1.0 KiB
TypeScript
import { expect, test } from "#e2e";
|
|
import {
|
|
BAD_PASSWORD,
|
|
BAD_USERNAME,
|
|
GOOD_PASSWORD,
|
|
GOOD_USERNAME,
|
|
} from "#e2e/fixtures/SessionFixture";
|
|
|
|
test.beforeEach(async ({ session }) => {
|
|
await session.toLoginPage();
|
|
});
|
|
|
|
test.describe("Session management", () => {
|
|
test("Login with valid credentials", async ({ session, page }) => {
|
|
await session.login({ username: GOOD_USERNAME, password: GOOD_PASSWORD });
|
|
|
|
await expect(
|
|
page.getByRole("heading", {
|
|
level: 1,
|
|
}),
|
|
).toHaveText("Application Dashboard", {
|
|
timeout: 10_000,
|
|
});
|
|
});
|
|
|
|
test("Reject bad username", async ({ session }) => {
|
|
await session.login({ username: BAD_USERNAME, password: GOOD_PASSWORD });
|
|
|
|
await expect(session.$authFailureMessage).toBeVisible();
|
|
});
|
|
|
|
test("Reject bad password", async ({ session }) => {
|
|
await session.login({ username: GOOD_USERNAME, password: BAD_PASSWORD });
|
|
|
|
await expect(session.$authFailureMessage).toBeVisible();
|
|
});
|
|
});
|