fix: navigate before loading page data

This commit is contained in:
2026-10-13 19:56:38 +09:00
parent a82e70047a
commit 26ab6130e0
119 changed files with 12748 additions and 11071 deletions
+1 -1
View File
@@ -177,7 +177,7 @@ Deno.test("Composer input uses boundary-aware Up and Down history navigation", a
);
const consoleSource = await Deno.readTextFile(
new URL(
"../src/routes/w/[workspaceId]/workers/[workerRef]/console/+page.svelte",
"../src/routes/w/[workspaceId]/workers/[workerRef]/console/PageContent.svelte",
import.meta.url,
),
);
+2 -2
View File
@@ -7,13 +7,13 @@ import {
const objectivesListSource = await Deno.readTextFile(
new URL(
"../src/routes/w/[workspaceId]/objectives/+page.svelte",
"../src/routes/w/[workspaceId]/objectives/PageContent.svelte",
import.meta.url,
),
);
const objectiveDetailSource = await Deno.readTextFile(
new URL(
"../src/routes/w/[workspaceId]/objectives/[objectiveId]/+page.svelte",
"../src/routes/w/[workspaceId]/objectives/[objectiveId]/PageContent.svelte",
import.meta.url,
),
);
+2 -2
View File
@@ -9,7 +9,7 @@ function assert(condition: boolean, message: string): asserts condition {
const pageSource = await Deno.readTextFile(
new URL(
"../../src/routes/w/[workspaceId]/settings/repositories/+page.svelte",
"../../src/routes/w/[workspaceId]/settings/repositories/PageContent.svelte",
import.meta.url,
),
);
@@ -34,7 +34,7 @@ test("Repository settings use the scoped list and typed create collection", () =
'method: "POST"',
"repository_key: repositoryKey",
"default_ref: defaultRef || null",
"await invalidateAll()",
"await refreshPageData()",
]
) {
assert(
@@ -5,19 +5,11 @@ import {
} from "../../src/lib/workspace/api/repository-access-loader.ts";
import { RepositoryAccessSchemaError } from "../../src/lib/workspace/api/repository-access.ts";
import { load as loadRepositoryAccessPage } from "../../src/routes/w/[workspaceId]/settings/repository-access/+page.ts";
import type { ResolvedPageData } from "../../src/lib/workspace/navigation/deferred.ts";
type HttpFailure = { status?: number; body?: { message?: string } };
type LoadedPage = {
accessProjection: unknown;
accessProjectionError: string | null;
credentials: Array<{ credential_id: string }>;
credentialsError: string | null;
publicKeys: Array<{ credential_id: string }>;
defaultPublicKeyError: string | null;
hostTrusts: Array<{ host_trust_id: string }>;
hostTrustsError: string | null;
};
type LoadedPage = ResolvedPageData<ReturnType<typeof loadRepositoryAccessPage>>;
const projectionFixture = {
workspace_id: "workspace-1",
@@ -74,13 +66,30 @@ async function loadPageWithFailure(failedSuffix: string): Promise<LoadedPage> {
}
throw new Error(`unexpected loader request: ${path}`);
};
return await (loadRepositoryAccessPage as unknown as (event: {
fetch: typeof fetch;
params: { workspaceId: string };
}) => Promise<LoadedPage>)({
fetch: fetcher as typeof fetch,
params: { workspaceId: "workspace-1" },
});
const envelope = loadRepositoryAccessPage(
{
fetch: fetcher as typeof fetch,
params: { workspaceId: "workspace-1" },
url: new URL(
"https://workspace.test/w/workspace-1/settings/repository-access",
),
} as Parameters<typeof loadRepositoryAccessPage>[0],
);
if (
envelope instanceof Promise ||
Object.keys(envelope).join() !== "deferredPage"
) {
throw new Error(
"Repository Access load must immediately return only the deferred page envelope",
);
}
const result = await envelope.deferredPage;
if (!result.ok) {
throw new Error(
`unexpected deferred page failure: ${result.failure.message}`,
);
}
return result.data;
}
async function captureHttpFailure(
@@ -9,7 +9,7 @@ function assert(condition: boolean, message: string): asserts condition {
const source = await Deno.readTextFile(
new URL(
"../../src/routes/w/[workspaceId]/settings/repository-access/+page.svelte",
"../../src/routes/w/[workspaceId]/settings/repository-access/PageContent.svelte",
import.meta.url,
),
);
@@ -10,7 +10,7 @@ import {
const root = new URL("../", import.meta.url);
const pageSource = await Deno.readTextFile(
new URL(
"./src/routes/w/[workspaceId]/repositories/[repositoryKey]/+page.svelte",
"./src/routes/w/[workspaceId]/repositories/[repositoryKey]/PageContent.svelte",
root,
),
);
@@ -2,7 +2,7 @@ import { assert, assertStringIncludes } from "jsr:@std/assert";
const pageSource = await Deno.readTextFile(
new URL(
"../src/routes/w/[workspaceId]/tickets/[ticketId]/+page.svelte",
"../src/routes/w/[workspaceId]/tickets/[ticketId]/PageContent.svelte",
import.meta.url,
),
);