// X-shaped composer pages for the Emoji Picker check (scripts/emoji-picker-verify.mjs): the home // composer at the top of the timeline, the inline reply box under a post on a post page, and the // modal composer of /compose/post (an [aria-modal] dialog in X's #layers, full screen below // 500 px), served with X's real Content-Security-Policy (X_CSP_DIRECTIVES). // They reproduce the parts of x.com that decide where a popup goes and how a toolbar // button must look: the left nav (275 px) and right column (350 px) at desktop widths, the 600 px // primary column, X's composer toolbar (a role=tablist of 34 px round buttons with 20 px accent // icons, the first one hanging 8 px left of the text column, X's "Add emoji" button fourth-last), // the Post/Reply pill on the right, a Draft.js editor. The icons are simple line drawings of our // own, not X's artwork. Passing here is not a live X test. /** * X's Content-Security-Policy for a signed-in x.com page, as read live from the app on 2026-09-29 * (the response header of https://x.com/home; report-uri shortened). The fixture pages are served * with it, so anything our runtime or a plugin does that X's page would refuse (an inline `; } export const PATHS = { home: '/home', reply: '/designnotes/status/1840000000000000001', modal: '/compose/post' };