Skip to content

Stress test

Ron Yitzhaki edited this page Oct 21, 2026 · 2 revisions

Stress test

A template that looks right with the designer's text can break in an editor's or a client's hands: a long German name overflows its box, Arabic comes out left to right, a number shows as 1e+21. ae_stress_test finds that before they do. It pushes worst-case inputs through every variable the comp exposes and measures each result.

Ask for it in plain words: "Stress-test the lower third with long German names and Arabic."

What it varies

  • The comp's variables: its Essential Graphics controllers (text, numbers, checkboxes, menus, colours, media replacement) and text that reads data, or the layers you name.
  • Test data, not looks: long German and Finnish strings scaled from the current text, Hebrew and Arabic with digits, Japanese, Chinese, Korean, Thai, Hindi, combining marks, emoji, all caps, empty, one character, no spaces; zero, negative, huge, past the slider limit, many decimals, both separator styles, percent; every checkbox and menu state.
  • Your own values, or rows from a CSV or JSON file, each row one variant.

By default each control is varied on its own (combinations: "single"); "together" and "all" combine them. Combinations are sampled evenly up to maxVariants (default 80), and the report says what was kept.

What it measures

At the animation's key frames and where each text starts and stops being visible (up to 12 frames by default):

  • Overflow of a paragraph box, by how many pixels and lines (After Effects 24.6 or later).
  • Safe areas: the frame, title-safe or action-safe, with your margins.
  • Text size: your minimum font size or cap height, or smaller than the comp's own text.
  • Missing glyphs (After Effects 25.1 or later): the report names the font you designed with and the font After Effects fell back to.
  • Direction: right-to-left and complex scripts without the paragraph direction or composer they need.
  • Lines: line count, and line breaks inside a word (After Effects 24.3 or later).
  • Overlap with layers you name.
  • Numbers: whether a number shows right in the text that displays it.

What already fails in the comp as it is now is listed once, as the baseline, so it doesn't repeat in every variant. A check your After Effects version can't run is reported as not run, never as passed.

Expressions in other languages

Expressions that reference something by its English display name, such as effect("Slider Control")("Slider"), thisLayer("Transform")("Opacity") or a default shape or mask name, break when the project opens in an After Effects in another language. Each one is listed with the language-safe form (an index, a match name or an attribute). action: "expressions" runs only this scan.

Your comp is never touched

Every variant is set on a scratch copy of the comp, which the same step removes again. Afterwards your comp is read back, every property value, and must be identical; if it isn't, the report says so. proveUnchanged: true adds a pixel proof (see Proven edits). In Read-only mode the stress test returns the plan and the expression scan only.

The report

  • PASS or FAIL, with what breaks, where, at which frame and by how much, for example "Title overflows its box by 184 px; 3 lines, the box shows 2 at f48".
  • A grid of variants and checks.
  • A contact sheet PNG for each failing variant (up to 12).
  • In AI apps that show in-chat views, the grid comes with each failing frame marked.

Options

Option Meaning Default
comp The comp to test the active comp
targets Which controls or layers to vary, with limits per target (maxLines, maxWidthPx) every variable the comp exposes
sets, exclude Which groups of test data to use or leave out ("rtl", "cjk", "number"…) all that fit each control
values, data, columns Your own values, or CSV / JSON rows mapped to controls —
combinations "single", "together" or "all" "single"
maxVariants At most this many variants (1–500) 80
frames, maxFrames Exact frames to check, or at most this many chosen frames (1–60) 12
checks Which checks run, with your limits (safe area, minimum size, overlap layers…) all
proveUnchanged Also prove with pixels that the comp is unchanged off
dryRun Only the plan off
timeBudgetSeconds Stop starting new variants after this long (10–3600) 300

Honest limits

  • It tests the inputs it generates or that you give it, at the chosen frames. A problem that only shows at another frame, or with another string, can be missed.
  • Overflow, glyph and line-break checks need newer After Effects versions (24.6, 25.1, 24.3); on older ones they are reported as not run.
  • Scripts can't set per-character direction or kashida justification, so those aren't tested.

Clone this wiki locally