Skip to content

Modernize VAST Tester - #47

Open
aleksUIX wants to merge 25 commits into
IABTechLab:masterfrom
aleksUIX:iab-next-gen-vast-tester
Open

Modernize VAST Tester#47
aleksUIX wants to merge 25 commits into
IABTechLab:masterfrom
aleksUIX:iab-next-gen-vast-tester

Conversation

@aleksUIX

@aleksUIX aleksUIX commented Jun 8, 2026

Copy link
Copy Markdown

Summary

Restage of the rewritten tester on current upstream master. Vite + React UI, vastlint / vastlint-client / vastlint-react from npm (0.13.8), IAB-neutral chrome.

Preview: https://iab-vasttester.vastlint.org/

VAST Tester workbench

SIMID studio and player profiles

Findings and resolved ads

What is included

  • Paste XML or fetch a remote VAST URL (CORS applies; no server proxy)
  • Validate and auto-fix deterministic issues
  • Wrapper resolution, resolved-ad inventory, tracking waterfall, macros, exportable QA reports
  • SIMID studio: handshake preview against IAB sample creatives, copyable host-transport log
  • OM SDK session panel
  • Player profiles: Web, IMA, ExoPlayer, Fire TV, Roku RAF, tvOS
  • Scenario library covering baseline, creative formats, SIMID, measurement, CTV/SSAI, and VAST 4.4 beta
  • Issues link to IABTechLab/VAST-Tester. No analytics, no sample collection

Validation

  • npm install
  • npm run build

aleksUIX added 2 commits May 24, 2026 16:49
Restores shared ancestry with IAB upstream while preserving the current committed tester tree.
@aleksUIX aleksUIX changed the title Modernize VAST Tester with vastlint-powered validation and QA workflows Modernize VAST Tester Jun 8, 2026
@aleksUIX
aleksUIX marked this pull request as ready for review June 8, 2026 01:18
aleksUIX added 22 commits July 30, 2026 21:08
0.10.2 predates the CTV Ad Portfolio VAST 2.0 extension path, so the tester
reported nothing at all on a tag using <Extension type="ctv_ad_portfolio">
or <CreativeExtension type="tl_qrcode">.

0.11.0 added six rules for the 2.0 container plus the two Format-to-Signal
cross-checks, and 0.11.1 closed the NonLinear traversal hole where MediaFile,
Mezzanine, InteractiveCreativeFile and Icon went unvalidated under the CTV
content model. Catalog goes from 212 to 220 rules.

No API change; the build and typecheck are unaffected.
0.11.3 predates the CTV Ad Portfolio extension-container validation added
in 0.11.4, so the tester reported nothing for a defective <MediaFile>,
<Duration>, <Icon> or <Tracking> inside <Extension type="ctv_ad_portfolio">.
0.11.5 is the element-dispatch refactor, which reports identically.

Catalog stays at 220 rules. No API change; build and typecheck unaffected.
Adds VAST-4.4-qrcode-missing-image-url and
VAST-3.0-adparameters-xmlencoded-value, and <Duration> is now format-checked
under <NonLinear>. Catalog 220 to 222.
The tester now publishes to two independent providers from the same commit.
Cloudflare Pages stays the primary and is unchanged: `npm run deploy:pages`
still builds with the default base and uploads dist. The new workflow builds
the same tree with `--base=/VAST-Tester/` on the command line, so the base
path lives only in CI and vite.config.ts keeps producing a root-relative
build for Cloudflare.

tsconfig.node.json could not typecheck from a clean `npm ci`. It asked for
`types: ["node"]`, but @types/node is only an optional peer of vite and is
never installed by the committed lockfile; local builds passed only because
other tooling happened to pull it in. It also set no target or lib, so it
defaulted to ES5 and could not read vite's own declarations. It is now
self-contained: ES2022, no ambient types, skipLibCheck on. vite.config.ts
uses no Node globals, so nothing is lost.
The masthead link hid the address behind "Send feedback" text and pointed at
a stale alias. Show alex@vastlint.org as readable text in the masthead and
footer, and add a contextual prompt under the findings table that opens a
prefilled mail draft carrying the tag and the reported rule IDs.
Handshake, protocol log, host transport, and simulate now run in the tester so creative QA does not need a custom player.
The default demo had no Error URL, so SSAI-safe failed, then the findings panel still told people to run validate. Add the beacon and show lens reasons instead.
Give partner QA a pasteable session envelope, and put the extension-container
path next to the 4.4 native samples so Advanced TV can click both XML shapes.
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.

1 participant