Skip to content

Figma and Notion imports

Your designs and specs already describe what the app should do. Connect Figma or Notion to a project, paste a link, and Plainwright drafts plain-English tests from it: one AI call reads the frames’ text or the page’s content and proposes tests you can review before anything is created.

Figma and Notion are import-only sources. To file failures as issues, connect Jira, Linear or GitHub.

Open the project’s Settings → Integrations → Docs & designs (admin role).

  1. In Figma, open Settings → Security → Personal access tokens and create a token with read access to file content. It starts with figd_.
  2. In Plainwright, click Figma, paste the token into Personal access token, and click Test connection. It should say Connected as your Figma handle.
  3. Click Connect.

The token sees every file your Figma account can open.

  1. In a module, click New test, then Import on the wizard’s first step. You can also use the Crawler page and choose issue or design.
  2. Choose Figma or Notion (only connected sources are listed) and paste a link.
  3. Click Suggest tests. After one AI call you get up to five drafts.
  4. Open a draft to read its full plain-English steps. Untick the ones you don’t want.
  5. Click Add N tests. They are created as Web UI tests in the module.

The Import tests drawer after reading the Notion page “Checkout spec”: three suggested tests, all ticked, and an Add 3 tests button

Every imported test records its origin (source is figma or notion, source_ref is the link), so you can find the design or spec a test came from.

You paste Plainwright reads
A file link: https://www.figma.com/design/<key>/… (/file/, /proto/, /board/ and /slides/ links also work), or a bare file key Every page, its top-level frames, and the text layers inside them
A link to one frame (with ?node-id=12-34) Just that frame and its text layers

Plainwright turns the design into an outline (# Page, ## frame, - text) of up to 60 frames and 40 text layers per frame. Hidden layers are skipped. The design’s words are what the AI works from, so frames with real copy (labels, buttons, error messages) give the best tests.

The text sent to the AI is capped at 12,000 characters. Project secret values that appear in it are replaced with ••••, and the project’s base URL is added so the drafts know which app they test.

Terminal window
# Draft tests from a Notion page (editor role, one AI call)
curl -fsS -X POST "$PLAINWRIGHT_URL/api/connectors/preview" \
-H "Authorization: Bearer $PLAINWRIGHT_TOKEN" -H "Content-Type: application/json" \
-d '{"project_id": "'"$PROJECT_ID"'", "kind": "notion",
"ref": "https://www.notion.so/acme/Checkout-spec-0f3c2a9b8e7d4c6a9b1e2d3f4a5b6c7d", "count": 5}'

The response has source (title, URL and an excerpt of what was read) and suggestions. Create the ones you want with POST /api/crawler/create and {"module_id": "…", "suggestions": [...]}, exactly as for Jira, Linear and GitHub. count is 1–10.

Message Fix
Notion: page not found — open the page in Notion, choose ••• → Connections and add your integration The page isn’t shared with the integration. Share it (sharing a parent page also shares its sub-pages).
Notion: that page has no readable content The page is empty, or holds only embeds or databases. Import a page with written content.
Figma: no frames or text layers found in that design The link points at an empty page, or every layer is hidden. Link to a frame that has text.
Paste a Figma file link (figma.com/design/…) The link isn’t a Figma file URL. Copy it from Share → Copy link.
The AI could not produce suggestions from this source The project’s AI provider failed, or the content was too thin. Check AI providers, or try a more detailed page.