Update project documentation and code comments to remove platform-specific references
Refactor documentation files and code comments to remove references to Replit, specific task numbers, and other platform-specific identifiers.
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
// Task #517 E2E:
|
||||
// E2E:
|
||||
// 1) An app with an `image_url` renders that image (not a Lucide icon)
|
||||
// on the launcher tile.
|
||||
// 2) An app with `open_mode='external_tab'` opens its `external_url` in
|
||||
|
||||
@@ -23,7 +23,7 @@ function attendanceLabel(lang, kind) {
|
||||
return val;
|
||||
}
|
||||
|
||||
// E2E coverage for Task #204: the per-group attendee headers
|
||||
// E2E coverage for: the per-group attendee headers
|
||||
// ("Virtual Attendance / Internal Attendance / External Attendance")
|
||||
// rendered above each attendee group in the schedule's attendee cell.
|
||||
//
|
||||
|
||||
@@ -174,7 +174,7 @@ for (const lang of ["en", "ar"]) {
|
||||
test(`Schedule [${lang}]: top "+ subheading" chip is NEVER rendered (empty / person-only / subheading-only / mixed)`, async ({
|
||||
page,
|
||||
}) => {
|
||||
// Task #230: the top chip is gone in every state. We seed two
|
||||
// the top chip is gone in every state. We seed two
|
||||
// meetings that, between them, exercise all four cell states:
|
||||
// meetingEmptyId: a brand-new meeting with zero attendees ⇒
|
||||
// the cell is EMPTY.
|
||||
@@ -272,7 +272,7 @@ for (const lang of ["en", "ar"]) {
|
||||
// must be absent in every group. We prove all three groups
|
||||
// mounted by checking each one's per-group trailing "+" person
|
||||
// button is present (testid em-add-attendee-{addType}). NOTE:
|
||||
// since Task #234, the trailing "+ subheading" chip is suppressed
|
||||
// since, the trailing "+ subheading" chip is suppressed
|
||||
// per group in split-mode cells and replaced by ONE cell-level
|
||||
// chip (testid em-add-subheading-cell-{meetingId}) — so the
|
||||
// per-group em-add-subheading-{addType} testids must NOT exist
|
||||
@@ -773,7 +773,7 @@ for (const lang of ["en", "ar"]) {
|
||||
test(`Schedule [${lang}]: split-mode cell shows ONE cell-level "+ subheading" chip and routes to the LAST visible group`, async ({
|
||||
page,
|
||||
}) => {
|
||||
// Task #234: in a split-mode cell (≥2 attendance groups visible),
|
||||
// in a split-mode cell (≥2 attendance groups visible),
|
||||
// the trailing "+ عنوان فرعي" chip must NOT be rendered per group;
|
||||
// a single cell-level chip below all groups is rendered instead.
|
||||
// Clicking it adds the new subheading to the LAST visible group in
|
||||
@@ -935,7 +935,7 @@ for (const lang of ["en", "ar"]) {
|
||||
test(`Schedule [${lang}]: split-mode WITHOUT external — cell-level "+ subheading" chip routes to INTERNAL (last visible)`, async ({
|
||||
page,
|
||||
}) => {
|
||||
// Task #234 fallback path. The "last visible group" rule resolves
|
||||
// fallback path. The "last visible group" rule resolves
|
||||
// the cell-level chip's target at click-time as
|
||||
// external > internal > virtual. The previous test exercises the
|
||||
// external-wins path; this one locks the internal-wins fallback by
|
||||
|
||||
@@ -14,7 +14,7 @@ function loadLocale(lang) {
|
||||
}
|
||||
const localeBundles = { en: loadLocale("en"), ar: loadLocale("ar") };
|
||||
|
||||
// E2E coverage for Task #207 — custom subheadings inside the attendees
|
||||
// E2E coverage for — custom subheadings inside the attendees
|
||||
// cell. Subheadings are user-defined section labels that live alongside
|
||||
// person rows in a meeting's attendee list, but are NOT counted as
|
||||
// attendees and do NOT advance the running "1-, 2-, 3-…" person index.
|
||||
|
||||
@@ -189,7 +189,7 @@ async function gotoSchedule(page, lang) {
|
||||
// LTR (English) and RTL (Arabic) locales — since the bug originally
|
||||
// surfaced on the Arabic schedule.
|
||||
//
|
||||
// Per Task #203 the index prefix is intentionally hidden when the
|
||||
// the index prefix is intentionally hidden when the
|
||||
// attendee group has only one entry, so this test scopes itself to
|
||||
// rows that actually carry an `em-attendee-index-*` span.
|
||||
for (const lang of ["en", "ar"]) {
|
||||
@@ -260,7 +260,7 @@ for (const lang of ["en", "ar"]) {
|
||||
}
|
||||
});
|
||||
|
||||
// Task #203: when an attendee group has exactly one entry the
|
||||
// when an attendee group has exactly one entry the
|
||||
// leading `1-` index prefix is hidden because there is nothing to
|
||||
// enumerate. Assert that for at least one solo-attendee row, no
|
||||
// `em-attendee-index-*` span exists inside it, in BOTH locales.
|
||||
|
||||
@@ -708,7 +708,7 @@ test("Schedule keyboard: Tab from the title cell reaches the time cell in the sa
|
||||
});
|
||||
|
||||
// -------------------------------------------------------------------
|
||||
// Task #308: typing on the keyboard + Enter must save.
|
||||
// typing on the keyboard + Enter must save.
|
||||
//
|
||||
// The historical bug: the time cell used <input type="time">, which
|
||||
// only fires onChange when the value is a complete, canonical "HH:MM"
|
||||
@@ -729,7 +729,7 @@ test("Schedule keyboard: Tab from the title cell reaches the time cell in the sa
|
||||
// the same for end, press Enter, and wait for the PATCH + day GET
|
||||
// refetch.
|
||||
//
|
||||
// Per task #315 the time cell is now a 12-hour picker — typing a
|
||||
// the time cell is now a 12-hour picker — typing a
|
||||
// 1–12 hour without first picking AM or PM is intentionally an
|
||||
// ambiguous parse error (the fix for the "1:15 silently saved as
|
||||
// AM" bug). For typed shapes that the picker can resolve on its
|
||||
@@ -802,7 +802,7 @@ async function typeTimesAndSave(
|
||||
// hour/minute so a test that accidentally passes by reading stale
|
||||
// state (rather than the new value) would fail.
|
||||
//
|
||||
// `startPeriod` / `endPeriod` mirror task #315's "the picker has no
|
||||
// `startPeriod` / `endPeriod` mirror's "the picker has no
|
||||
// implicit default" rule: ambiguous typed shapes (1–12 hour, no
|
||||
// marker) require the helper to click the AM/PM toggle, while
|
||||
// shapes with an explicit marker or a 24h-only hour are resolved by
|
||||
@@ -884,7 +884,7 @@ test("Schedule keyboard (AR): typing Arabic-Indic digits + Enter saves canonical
|
||||
await gotoMeetingRow(page, meetingId, date);
|
||||
|
||||
// ٠٩:٣٠ -> 09:30, ١٠:٤٥ -> 10:45. Both are 1–12 hours so the
|
||||
// picker requires an explicit AM/PM choice (task #315) — pass the
|
||||
// picker requires an explicit AM/PM choice — pass the
|
||||
// Arabic morning marker via the toggle so the helper clicks ص.
|
||||
await typeTimesAndSave(page, meetingId, date, "٠٩:٣٠", "١٠:٤٥", "am", "am");
|
||||
|
||||
@@ -897,7 +897,7 @@ test("Schedule keyboard (AR): typing Arabic-Indic digits + Enter saves canonical
|
||||
});
|
||||
|
||||
// -------------------------------------------------------------------
|
||||
// Task #311: dragging a visible meeting must produce a chronologically-
|
||||
// dragging a visible meeting must produce a chronologically-
|
||||
// sorted visible list, even when the same day contains hidden cancelled
|
||||
// meetings. Before the fix, cancelled meetings (filtered out of
|
||||
// `orderedMeetings` for display) were still included in the reorder
|
||||
@@ -1239,7 +1239,7 @@ test("Schedule keyboard: Tab walks start hour → start minute → start AM →
|
||||
const endPm = page.getByTestId(`em-time-end-period-pm-${meetingId}`);
|
||||
await expect(startInput).toBeFocused();
|
||||
|
||||
// Per task #315 each side has THREE controls: hour input, minute
|
||||
// each side has THREE controls: hour input, minute
|
||||
// input, AM/PM toggle. Tab walks through start hour → start minute
|
||||
// → start AM → start PM → end hour → end minute → end AM → end PM.
|
||||
// "7" + "15" is a 1–12 hour with no marker, so the picker requires
|
||||
@@ -1429,7 +1429,7 @@ test.describe("Schedule mobile viewport (iPhone 375)", () => {
|
||||
});
|
||||
|
||||
// -------------------------------------------------------------------
|
||||
// Task #316: stop the snap-back race + collapse the editor instantly.
|
||||
// stop the snap-back race + collapse the editor instantly.
|
||||
// Three guards:
|
||||
// 1. Save → immediate re-open of the editor must show the SAVED
|
||||
// values pre-filled, not blank fields. (The bug the user
|
||||
@@ -1727,8 +1727,8 @@ test("Schedule time editor: a failed PATCH rolls back the optimistic times and r
|
||||
|
||||
// ─── #317: optimistic-cache repaint for non-time inline editors ─────
|
||||
//
|
||||
// Task #316 made the time cell repaint instantly via an optimistic
|
||||
// React Query cache write. Task #317 generalises that pattern to the
|
||||
// made the time cell repaint instantly via an optimistic
|
||||
// React Query cache write. generalises that pattern to the
|
||||
// title, attendee-name, and merge-text editors. The three tests below
|
||||
// mirror the time-cell tests for the title cell:
|
||||
//
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// E2E + UI coverage for the cell-merge feature added by task #152.
|
||||
// E2E + UI coverage for the cell-merge feature added by.
|
||||
//
|
||||
// Two scenarios live here:
|
||||
//
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// Verifies the consolidated row-actions kebab menu introduced as part
|
||||
// of task #191 — the three previously-separate row overlays (delete,
|
||||
// of — the three previously-separate row overlays (delete,
|
||||
// row color, merge cells) are now collapsed into a single menu so they
|
||||
// no longer collide visually inside narrow cells. Each sub-action
|
||||
// keeps its original testid, so the rest of the suite + any external
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// Coverage for task #192 — quick-preview indicators on the row-actions
|
||||
// Coverage for — quick-preview indicators on the row-actions
|
||||
// kebab menu's main view:
|
||||
//
|
||||
// 1. The "Row color" item shows a tiny swatch reflecting the row's
|
||||
|
||||
@@ -595,7 +595,7 @@ test("Schedule: editing an attendee name with bold + color via the Tiptap toolba
|
||||
|
||||
// Seed a meeting with one attendee whose name is plain text. The
|
||||
// attendee row uses the SAME EditableCell + Tiptap toolbar as titles
|
||||
// (parent task #122), so applying bold + a color swatch and saving
|
||||
// (parent), so applying bold + a color swatch and saving
|
||||
// via the toolbar's check button must round-trip through the PUT
|
||||
// attendees endpoint and survive a full reload, just like titles do.
|
||||
const date = uniqueFutureDate(4);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// Task #512 e2e: per-recipient delete on the Inbox tab.
|
||||
// e2e: per-recipient delete on the Inbox tab.
|
||||
// Seeds three received notes for a recipient, opens Notes (Inbox is
|
||||
// the default view), enters bulk-select mode, picks two cards,
|
||||
// confirms the bulk delete, and verifies that the deleted recipient
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// Task #438 e2e: a recipient toggles a checklist item directly from the
|
||||
// e2e: a recipient toggles a checklist item directly from the
|
||||
// incoming-note popup, and the change is visible to the sender (and
|
||||
// persists server-side).
|
||||
import { test, expect } from "@playwright/test";
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// E2E test for Task #406: when a sender sends a note, the recipient (in
|
||||
// E2E test for: when a sender sends a note, the recipient (in
|
||||
// another browser context) sees the note pop up as a centered modal on
|
||||
// their screen — wherever they are in the app — within ~seconds.
|
||||
import { test, expect } from "@playwright/test";
|
||||
@@ -225,7 +225,7 @@ test("recipient sees a popup modal when a note arrives in real time", async ({
|
||||
}
|
||||
});
|
||||
|
||||
// Task #410: when the recipient replies on a note, the *original sender*
|
||||
// when the recipient replies on a note, the *original sender*
|
||||
// (note owner) should see the same floating-card popup variant — pre-
|
||||
// filled with the reply text + replier name — wherever they are in the
|
||||
// app, with the same chime/vibration profile as the new-note alert.
|
||||
@@ -373,7 +373,7 @@ test("sender sees a floating reply card when the recipient replies", async ({
|
||||
}
|
||||
});
|
||||
|
||||
// Task #433: a checklist note must render the inner sticky-note "as a
|
||||
// a checklist note must render the inner sticky-note "as a
|
||||
// real note" — i.e. the popup body shows a read-only checklist preview
|
||||
// (not the plain text body), proving `noteKind` + `items` are forwarded
|
||||
// from the backend through the socket payload into the popup.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// Task #427: on touch devices (iPad / phone), tapping a button on the
|
||||
// on touch devices (iPad / phone), tapping a button on the
|
||||
// floating note popup MUST work — even when other floating UI is on
|
||||
// screen at the same time. The previous root cause was a full-viewport
|
||||
// `fixed inset-0` wrapper at z-[110] that intermittently swallowed
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// Task #472 e2e: multi-select + bulk-delete on the Sent notes tab.
|
||||
// e2e: multi-select + bulk-delete on the Sent notes tab.
|
||||
// Seeds three sent notes for a user, opens the Sent view, enters
|
||||
// selection mode, picks two cards, confirms the bulk delete, and
|
||||
// verifies that the count drops by two while the unselected note
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
// E2E test: the note thread dialog must cap its height instead of growing
|
||||
// to fill the entire viewport when the conversation is long. Regression
|
||||
// guard for task #417 (user reported the dialog covering the whole page).
|
||||
// guard for (user reported the dialog covering the whole page).
|
||||
import { test, expect } from "@playwright/test";
|
||||
import pg from "pg";
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// E2E test for Task #441: notification sounds use Web Audio so they
|
||||
// E2E test for: notification sounds use Web Audio so they
|
||||
// reliably play on iPad Safari after a single user gesture. Verifies
|
||||
// (1) the AudioContext reaches `running` state after the user clicks
|
||||
// the per-sound preview button in notification settings, (2) the play
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// Playwright e2e for the per-card and bulk delete affordances on
|
||||
// /orders/incoming added in task #397.
|
||||
// /orders/incoming added in.
|
||||
//
|
||||
// Covers:
|
||||
// - Bulk delete: receiver selects 2 unclaimed orders via per-card
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// Task #438: lightweight render test for the upcoming-meeting alert
|
||||
// lightweight render test for the upcoming-meeting alert
|
||||
// entrance animation. Asserts the alert panel renders with the
|
||||
// matching scale-in/opacity transition, an accent ring (boxShadow with
|
||||
// the user's accent color), and a pulsing animate-ping halo around the
|
||||
|
||||
Reference in New Issue
Block a user