개선관리 요구사항과 Google 로그인을 완료
This commit is contained in:
parent
cc0a15b7c6
commit
2a39636163
112 changed files with 10166 additions and 527 deletions
|
|
@ -22,6 +22,7 @@
|
|||
import { expect, test, type Page, type Route } from "@playwright/test";
|
||||
import {
|
||||
FILLED_REVIEW_SESSION_ID,
|
||||
FILLED_REVIEW_TURN_IDS,
|
||||
routeFilledSessionReview,
|
||||
routePrepostMeasures,
|
||||
} from "./session-review-fixture";
|
||||
|
|
@ -297,7 +298,7 @@ function revealedMeasurements() {
|
|||
: "목표와 과업을 함께 확인한 발화를 근거로 판단했습니다.",
|
||||
evidence: [
|
||||
{
|
||||
turn_id: "t6",
|
||||
turn_id: FILLED_REVIEW_TURN_IDS[5],
|
||||
seq: 6,
|
||||
speaker: "client",
|
||||
text: "적어도 제가 화난 게 이상한 건 아니라는 말은 좀 기억에 남아요.",
|
||||
|
|
@ -504,6 +505,44 @@ test.describe("UC 치료 동맹 펄스 — 회기 중 자기점검(mid)", () =>
|
|||
// ── post: 리뷰에서 잠금·공개·수정 불가 ─────────────────────────────
|
||||
|
||||
test.describe("UC 치료 동맹 펄스 — 리뷰(post)", () => {
|
||||
test("근거 장면은 화면용 t번호가 아니라 영속 UUID로 잠근다", async ({ page }) => {
|
||||
await routeReviewPage(page);
|
||||
let submittedBody: Record<string, unknown> | null = null;
|
||||
await page.route(
|
||||
`**/api/sessions/${FILLED_REVIEW_SESSION_ID}/alliance-pulses`,
|
||||
async (route) => {
|
||||
if (route.request().method() === "POST") {
|
||||
submittedBody = route.request().postDataJSON() as Record<string, unknown>;
|
||||
await fulfillJson(
|
||||
route,
|
||||
{ pulse_id: "pulse-post-uuid", status: "awaiting_agents" },
|
||||
202,
|
||||
);
|
||||
return;
|
||||
}
|
||||
await fulfillJson(route, { items: [] });
|
||||
},
|
||||
);
|
||||
await page.goto(`/learn/session/${FILLED_REVIEW_SESSION_ID}/review`);
|
||||
|
||||
await pickReviewScore(page, "목표 합의 평가", "4 대체로 그렇다");
|
||||
await pickReviewScore(page, "과업 합의 평가", "3 보통이다");
|
||||
await pickReviewScore(page, "정서적 유대 평가", "5 매우 그렇다");
|
||||
await page.getByText("내 판단의 근거 장면 선택").click();
|
||||
await page.getByRole("checkbox").first().check();
|
||||
await page.getByRole("button", { name: "내 판단 잠그고 관점 비교" }).click();
|
||||
|
||||
await expect.poll(() => submittedBody).not.toBeNull();
|
||||
expect(submittedBody).toEqual({
|
||||
checkpoint: "post",
|
||||
scores: { goal: 0.75, task: 0.5, bond: 1 },
|
||||
evidence_turn_ids: [FILLED_REVIEW_TURN_IDS[0]],
|
||||
});
|
||||
expect(FILLED_REVIEW_TURN_IDS[0]).toMatch(
|
||||
/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i,
|
||||
);
|
||||
});
|
||||
|
||||
// usecase: 리뷰에서 근거 장면 없이 세 축만 고른 학습자는 post 판단을 잠글 수 없다
|
||||
test("리뷰에서 근거 장면 없이 세 축만 고르면 post 판단을 잠글 수 없다", async ({
|
||||
page,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue