Skip to content

feat(e2e-harness): preserve ANSI color in snapshot frames#730

Merged
gewenyu99 merged 3 commits into
mainfrom
ci/snapshot-ansi-color
Jul 9, 2026
Merged

feat(e2e-harness): preserve ANSI color in snapshot frames#730
gewenyu99 merged 3 commits into
mainfrom
ci/snapshot-ansi-color

Conversation

@gewenyu99

@gewenyu99 gewenyu99 commented Jun 25, 2026

Copy link
Copy Markdown
Collaborator

Serialize each captured TUI frame back to ANSI so snapshots preserve the terminal's colors and attributes instead of flattening to plain text.

Snapshots — full real-TUI run, color preserved

Real --e2e run against basic-integration/next-js/15-app-router-todo, every key-moment frame captured through frameAnsi() and rendered with its color.

01-intro (+0s)

01-intro

02-auth (+1s)

02-auth

03-run (+2s)

03-run

04-run (+3s)

04-run

05-outro (+6s)

05-outro

06-mcp (+7s)

06-mcp

07-slack-connect (+8s)

07-slack-connect

08-keep-skills (+8s)

08-keep-skills

frame() returns plain text (translateToString), which strips the colors —
the snapshots are meant to faithfully reproduce the colored CLI. Add
frameAnsi(), which serializes the xterm buffer back to ANSI (fg/bg incl.
256-color and truecolor, plus bold/italic/underline/etc.) by reading cell
attributes, and have tui-snapshots write .ans frames with it. frame() stays
plain for the agent-facing render_screen.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown

🧙 Wizard CI

Run the Wizard CI and test your changes against wizard-workbench example apps by replying with a GitHub comment using one of the following commands:

Test all apps:

  • /wizard-ci all

Test all apps in a directory:

  • /wizard-ci basic-integration
  • /wizard-ci error-tracking-upload-source-maps
  • /wizard-ci misc
  • /wizard-ci revenue

Test an individual app:

  • /wizard-ci basic-integration/android
  • /wizard-ci basic-integration/angular
  • /wizard-ci basic-integration/astro
Show more apps
  • /wizard-ci basic-integration/django
  • /wizard-ci basic-integration/fastapi
  • /wizard-ci basic-integration/flask
  • /wizard-ci basic-integration/javascript-node
  • /wizard-ci basic-integration/javascript-web
  • /wizard-ci basic-integration/laravel
  • /wizard-ci basic-integration/next-js
  • /wizard-ci basic-integration/nuxt
  • /wizard-ci basic-integration/python
  • /wizard-ci basic-integration/rails
  • /wizard-ci basic-integration/react-native
  • /wizard-ci basic-integration/react-router
  • /wizard-ci basic-integration/sveltekit
  • /wizard-ci basic-integration/swift
  • /wizard-ci basic-integration/tanstack-router
  • /wizard-ci basic-integration/tanstack-start
  • /wizard-ci basic-integration/vue
  • /wizard-ci error-tracking-upload-source-maps/android
  • /wizard-ci error-tracking-upload-source-maps/cicd-docker-node-raw
  • /wizard-ci error-tracking-upload-source-maps/cicd-github-actions-docker-node-raw
  • /wizard-ci error-tracking-upload-source-maps/cicd-github-actions-nested-docker-node-raw
  • /wizard-ci error-tracking-upload-source-maps/cicd-github-actions-node-raw
  • /wizard-ci error-tracking-upload-source-maps/cicd-github-actions-single-stage-docker-node-raw
  • /wizard-ci error-tracking-upload-source-maps/cicd-gitlab-node-raw
  • /wizard-ci error-tracking-upload-source-maps/cicd-monorepo-pnpm-node-react
  • /wizard-ci error-tracking-upload-source-maps/cicd-monorepo-raw-node-react
  • /wizard-ci error-tracking-upload-source-maps/cicd-ssh-vps-node-raw
  • /wizard-ci error-tracking-upload-source-maps/flutter
  • /wizard-ci error-tracking-upload-source-maps/ios
  • /wizard-ci error-tracking-upload-source-maps/next
  • /wizard-ci error-tracking-upload-source-maps/next-no-posthog
  • /wizard-ci error-tracking-upload-source-maps/node-raw
  • /wizard-ci error-tracking-upload-source-maps/node-rollup
  • /wizard-ci error-tracking-upload-source-maps/node-rollup-typescript-plugin
  • /wizard-ci error-tracking-upload-source-maps/node-webpack
  • /wizard-ci error-tracking-upload-source-maps/nuxt-3-6
  • /wizard-ci error-tracking-upload-source-maps/nuxt-4-3
  • /wizard-ci error-tracking-upload-source-maps/react-native
  • /wizard-ci error-tracking-upload-source-maps/react-vite
  • /wizard-ci error-tracking-upload-source-maps/rust
  • /wizard-ci misc/quack-quack
  • /wizard-ci revenue/stripe

Results will be posted here when complete.

@gewenyu99 gewenyu99 marked this pull request as draft June 25, 2026 14:19
@gewenyu99 gewenyu99 requested a review from a team July 8, 2026 20:28

@edwinyjlim edwinyjlim left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@gewenyu99 gewenyu99 marked this pull request as ready for review July 9, 2026 13:22
@gewenyu99

Copy link
Copy Markdown
Collaborator Author

:colors:

@gewenyu99 gewenyu99 merged commit 406b41d into main Jul 9, 2026
17 checks passed
@gewenyu99 gewenyu99 deleted the ci/snapshot-ansi-color branch July 9, 2026 14:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants