mirror of
https://github.com/ramvignesh-b/pi-ku.git
synced 2026-05-04 08:56:52 +00:00
refactor: add pointer-events disabling for envelope states and update e2e tests to match UI interactions
This commit is contained in:
@@ -86,10 +86,10 @@ test.describe("Letter Drafting (Real Backend)", () => {
|
|||||||
await AuthHelper.registerAndLogin(page, email, name, password);
|
await AuthHelper.registerAndLogin(page, email, name, password);
|
||||||
|
|
||||||
logger.info(">> [Seal] Navigating to Editor via UI...");
|
logger.info(">> [Seal] Navigating to Editor via UI...");
|
||||||
await page.getByRole("button", { name: /write something/i }).click();
|
await page.locator("#write-letter-btn").click();
|
||||||
|
|
||||||
const recipientInput = page.locator("#recipient");
|
const recipientInput = page.locator("#recipient");
|
||||||
await recipientInput.waitFor({ state: "visible", timeout: 20000 });
|
await recipientInput.waitFor({ state: "visible", timeout: 10000 });
|
||||||
await recipientInput.fill("A Secret Guest");
|
await recipientInput.fill("A Secret Guest");
|
||||||
|
|
||||||
const canvasInput = page.getByLabel("Canvas text input");
|
const canvasInput = page.getByLabel("Canvas text input");
|
||||||
@@ -123,6 +123,10 @@ test.describe("Letter Drafting (Real Backend)", () => {
|
|||||||
await expect(page.getByText(/breaking the seal/i)).toBeHidden({
|
await expect(page.getByText(/breaking the seal/i)).toBeHidden({
|
||||||
timeout: 10000,
|
timeout: 10000,
|
||||||
});
|
});
|
||||||
|
// Flip the envelope to show the seal
|
||||||
|
await page.locator("#env-front").click();
|
||||||
|
await page.waitForTimeout(2500); // Wait for flip transition
|
||||||
|
|
||||||
await page.getByAltText("Seal").click();
|
await page.getByAltText("Seal").click();
|
||||||
await page.waitForTimeout(1500);
|
await page.waitForTimeout(1500);
|
||||||
await page.locator("#letter").click({ position: { x: 30, y: 15 } });
|
await page.locator("#letter").click({ position: { x: 30, y: 15 } });
|
||||||
@@ -133,7 +137,7 @@ test.describe("Letter Drafting (Real Backend)", () => {
|
|||||||
await page.locator("#share-letter-btn").click();
|
await page.locator("#share-letter-btn").click();
|
||||||
|
|
||||||
// Verify share modal with a valid link
|
// Verify share modal with a valid link
|
||||||
await expect(page.getByText(/share this letter/i)).toBeVisible();
|
await expect(page.getByText(/send this letter/i)).toBeVisible();
|
||||||
const linkInput = page.locator("#share-link-input");
|
const linkInput = page.locator("#share-link-input");
|
||||||
const linkValue = await linkInput.inputValue();
|
const linkValue = await linkInput.inputValue();
|
||||||
expect(linkValue).toContain("/read/");
|
expect(linkValue).toContain("/read/");
|
||||||
@@ -142,7 +146,7 @@ test.describe("Letter Drafting (Real Backend)", () => {
|
|||||||
|
|
||||||
await expect(page.getByRole("button", { name: /copy/i })).toBeVisible();
|
await expect(page.getByRole("button", { name: /copy/i })).toBeVisible();
|
||||||
await page.getByRole("button", { name: /close/i }).click();
|
await page.getByRole("button", { name: /close/i }).click();
|
||||||
await expect(page.getByText(/share this letter/i)).toBeHidden();
|
await expect(page.getByText(/send this letter/i)).toBeHidden();
|
||||||
});
|
});
|
||||||
|
|
||||||
test("should allow author to access sealed letter from drawer without sharing key", async ({
|
test("should allow author to access sealed letter from drawer without sharing key", async ({
|
||||||
@@ -183,10 +187,6 @@ test.describe("Letter Drafting (Real Backend)", () => {
|
|||||||
});
|
});
|
||||||
await page.getByRole("button", { name: /keep it/i }).click();
|
await page.getByRole("button", { name: /keep it/i }).click();
|
||||||
|
|
||||||
// Navigate to Drawer - use ID or precise label
|
|
||||||
logger.info(">> [Drawer] Navigating to Drawer...");
|
|
||||||
await page.locator("button[aria-label='Open Drawer']").click();
|
|
||||||
|
|
||||||
// Open "Kept" section - search for the section with id='kept' and click its toggle button
|
// Open "Kept" section - search for the section with id='kept' and click its toggle button
|
||||||
logger.info(">> [Drawer] Opening Kept section...");
|
logger.info(">> [Drawer] Opening Kept section...");
|
||||||
const keptSection = page.locator("#kept");
|
const keptSection = page.locator("#kept");
|
||||||
|
|||||||
@@ -48,7 +48,9 @@ export function EnvelopeReveal({
|
|||||||
<div
|
<div
|
||||||
className={`relative h-70 w-105 transform-3d transition-transform duration-2000 ${isFlipped ? "rotate-y-180" : ""}`}
|
className={`relative h-70 w-105 transform-3d transition-transform duration-2000 ${isFlipped ? "rotate-y-180" : ""}`}
|
||||||
>
|
>
|
||||||
<div className=" flex backface-hidden rotate-y-180 justify-center transition-all duration-1000">
|
<div
|
||||||
|
className={` flex backface-hidden rotate-y-180 justify-center transition-all duration-1000 ${isFlipped ? "" : "pointer-events-none"}`}
|
||||||
|
>
|
||||||
<div
|
<div
|
||||||
id="env-top"
|
id="env-top"
|
||||||
className="z-4 delay-500 transition-all duration-2000 absolute peer h-40 w-54 mt-0 bg-base-200 mask mask-triangle-2 scale-x-234 has-checked:scale-y-[-1] has-checked:-translate-y-full has-checked:z-1 has-checked:duration-1000"
|
className="z-4 delay-500 transition-all duration-2000 absolute peer h-40 w-54 mt-0 bg-base-200 mask mask-triangle-2 scale-x-234 has-checked:scale-y-[-1] has-checked:-translate-y-full has-checked:z-1 has-checked:duration-1000"
|
||||||
@@ -93,7 +95,7 @@ export function EnvelopeReveal({
|
|||||||
<button
|
<button
|
||||||
id="env-front"
|
id="env-front"
|
||||||
type="button"
|
type="button"
|
||||||
className="text-left p-10 absolute inset-0 backface-hidden w-110 bg-base-200 z-99 rounded-md -translate-x-2"
|
className={`text-left p-10 absolute inset-0 backface-hidden w-110 bg-base-200 z-99 rounded-md -translate-x-2 ${isFlipped ? "pointer-events-none" : ""}`}
|
||||||
onClick={() => setIsFlipped((prev) => !prev)}
|
onClick={() => setIsFlipped((prev) => !prev)}
|
||||||
>
|
>
|
||||||
<span className={"text-neutral-content/60 font-xs font-display"}>
|
<span className={"text-neutral-content/60 font-xs font-display"}>
|
||||||
|
|||||||
@@ -142,6 +142,7 @@ export default function Drawer() {
|
|||||||
|
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
|
id="write-letter-btn"
|
||||||
className="group mt-15 z-10 bg-transparent border border-dashed border-base-content/10 px-8 py-4 text-base-content/40 italic cursor-pointer transition-all hover:border-primary/40 hover:text-base-content/60 hover:bg-primary/5 hover:-translate-y-0.5 flex items-center gap-2 focus-visible:ring-2 focus-visible:ring-primary/50 duration-500"
|
className="group mt-15 z-10 bg-transparent border border-dashed border-base-content/10 px-8 py-4 text-base-content/40 italic cursor-pointer transition-all hover:border-primary/40 hover:text-base-content/60 hover:bg-primary/5 hover:-translate-y-0.5 flex items-center gap-2 focus-visible:ring-2 focus-visible:ring-primary/50 duration-500"
|
||||||
onClick={() => navigate(PATHS.write(""))}
|
onClick={() => navigate(PATHS.write(""))}
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -315,7 +315,7 @@ export default function Reader() {
|
|||||||
>
|
>
|
||||||
<PaperPlaneTiltIcon size={16} weight="duotone" />
|
<PaperPlaneTiltIcon size={16} weight="duotone" />
|
||||||
<span className="text-md uppercase font-sans tracking-widest">
|
<span className="text-md uppercase font-sans tracking-widest">
|
||||||
Send to someone...
|
Send to someone
|
||||||
</span>
|
</span>
|
||||||
</button>
|
</button>
|
||||||
<button
|
<button
|
||||||
|
|||||||
Reference in New Issue
Block a user