From 8885dbd722ce628299ef33bfa7838bc534cd1907 Mon Sep 17 00:00:00 2001 From: nitrix Date: Thu, 12 Mar 2026 22:32:19 +0100 Subject: [PATCH] Soften RSVP cancellation dialog wording Replace harsh "permanently cancelled" language with friendlier "The organizer will no longer see you as attending" and rename buttons from "Cancel attendance" to "Cancel RSVP". Co-Authored-By: Claude Opus 4.6 --- frontend/e2e/cancel-rsvp.spec.ts | 16 ++++++++-------- frontend/e2e/watch-event.spec.ts | 2 +- frontend/src/components/RsvpBar.vue | 2 +- frontend/src/views/EventDetailView.vue | 6 +++--- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/frontend/e2e/cancel-rsvp.spec.ts b/frontend/e2e/cancel-rsvp.spec.ts index 539c12e..051cbfa 100644 --- a/frontend/e2e/cancel-rsvp.spec.ts +++ b/frontend/e2e/cancel-rsvp.spec.ts @@ -43,7 +43,7 @@ test.describe('US1: Cancel RSVP from Event Detail View', () => { await expect(statusBar).toBeVisible() // Cancel button hidden initially - await expect(page.getByRole('button', { name: 'Cancel attendance' })).not.toBeVisible() + await expect(page.getByRole('button', { name: 'Cancel RSVP' })).not.toBeVisible() }) test('tapping status bar reveals cancel button', async ({ page, network }) => { @@ -57,7 +57,7 @@ test.describe('US1: Cancel RSVP from Event Detail View', () => { await page.getByRole('button', { name: /You're attending/ }).click() // Cancel button appears - await expect(page.getByRole('button', { name: 'Cancel attendance' })).toBeVisible() + await expect(page.getByRole('button', { name: 'Cancel RSVP' })).toBeVisible() }) test('confirm cancellation → localStorage cleared, count decremented, bar reset', async ({ page, network }) => { @@ -70,13 +70,13 @@ test.describe('US1: Cancel RSVP from Event Detail View', () => { await page.addInitScript(seedEvents([rsvpSeed()])) await page.goto(`/events/${fullEvent.eventToken}`) - // Expand → Cancel attendance → Confirm in dialog + // Expand → Cancel RSVP → Confirm in dialog await page.getByRole('button', { name: /You're attending/ }).click() await page.locator('.rsvp-bar__cancel').click() // Confirm dialog - await expect(page.getByText('Your attendance will be permanently cancelled.')).toBeVisible() - await page.getByRole('alertdialog').getByRole('button', { name: 'Cancel attendance' }).click() + await expect(page.getByText('The organizer will no longer see you as attending.')).toBeVisible() + await page.getByRole('alertdialog').getByRole('button', { name: 'Cancel RSVP' }).click() // Bar resets to CTA state await expect(page.getByRole('button', { name: "I'm attending" })).toBeVisible() @@ -108,7 +108,7 @@ test.describe('US1: Cancel RSVP from Event Detail View', () => { // Expand → Cancel → Confirm in dialog await page.getByRole('button', { name: /You're attending/ }).click() await page.locator('.rsvp-bar__cancel').click() - await page.getByRole('alertdialog').getByRole('button', { name: 'Cancel attendance' }).click() + await page.getByRole('alertdialog').getByRole('button', { name: 'Cancel RSVP' }).click() // Error message await expect(page.getByText('Could not cancel RSVP. Please try again.')).toBeVisible() @@ -136,7 +136,7 @@ test.describe('US1: Cancel RSVP from Event Detail View', () => { // Cancel first await page.getByRole('button', { name: /You're attending/ }).click() await page.locator('.rsvp-bar__cancel').click() - await page.getByRole('alertdialog').getByRole('button', { name: 'Cancel attendance' }).click() + await page.getByRole('alertdialog').getByRole('button', { name: 'Cancel RSVP' }).click() // CTA should be back await expect(page.getByRole('button', { name: "I'm attending" })).toBeVisible() @@ -244,7 +244,7 @@ test.describe('US3: Cancel RSVP with Stale/Invalid Token', () => { // Cancel flow await page.getByRole('button', { name: /You're attending/ }).click() await page.locator('.rsvp-bar__cancel').click() - await page.getByRole('alertdialog').getByRole('button', { name: 'Cancel attendance' }).click() + await page.getByRole('alertdialog').getByRole('button', { name: 'Cancel RSVP' }).click() // Treated as success — CTA returns await expect(page.getByRole('button', { name: "I'm attending" })).toBeVisible() diff --git a/frontend/e2e/watch-event.spec.ts b/frontend/e2e/watch-event.spec.ts index 3a32bb1..94b936e 100644 --- a/frontend/e2e/watch-event.spec.ts +++ b/frontend/e2e/watch-event.spec.ts @@ -129,7 +129,7 @@ test.describe('US4: RSVP cancellation preserves watch status', () => { // Cancel RSVP await page.getByRole('button', { name: /You're attending/ }).click() await page.locator('.rsvp-bar__cancel').click() - await page.getByRole('alertdialog').getByRole('button', { name: 'Cancel attendance' }).click() + await page.getByRole('alertdialog').getByRole('button', { name: 'Cancel RSVP' }).click() // Bookmark reappears in CTA state, filled because event is still stored const bookmark = page.locator('.rsvp-bar__bookmark-inner') diff --git a/frontend/src/components/RsvpBar.vue b/frontend/src/components/RsvpBar.vue index 31559d7..498de03 100644 --- a/frontend/src/components/RsvpBar.vue +++ b/frontend/src/components/RsvpBar.vue @@ -25,7 +25,7 @@ type="button" @click="$emit('cancel')" > - Cancel attendance + Cancel RSVP diff --git a/frontend/src/views/EventDetailView.vue b/frontend/src/views/EventDetailView.vue index c9c4e59..24b331b 100644 --- a/frontend/src/views/EventDetailView.vue +++ b/frontend/src/views/EventDetailView.vue @@ -129,9 +129,9 @@