← Back to Blog

Integrating VNC into SA-Checker: Remote Accessibility Auditing for Storyline

3/8/2025 · Dotsinc Team

Recently, we integrated VNC into SA-checker (storyline accessibility checker), an internal accessibility scanning system built for Articulate Storyline courses.

The challenge was not automation. The challenge was control.

Articulate Storyline courses are highly interactive. Slides, layers, triggers, timelines. Fully automated crawlers miss real interaction paths. Manual auditing, on the other hand, required local installations, screen readers, and heavy setup.

There was no centralized way to:

• Let a reviewer remotely drive the real course • Trigger per-slide accessibility checks • Store structured WCAG results slide by slide • Do all of this without installing anything locally

So we built one.

Architecture Overview

Single-server Django deployment (on-prem / VPS).

Runtime stack:

• Playwright (Chromium automation) • Xvfb (virtual Linux display) • x11vnc + websockify + noVNC • axe-core + custom WCAG + Storyline rules

Here's what VNC actually enabled:

The reviewer opens a browser-based noVNC session → Sees the exact Chromium instance where the course is loaded → Navigates slides manually → Clicks "Analyze Slide" → Accessibility checks run only on that slide container → Results are stored in the backend per slide.

VNC became the remote control layer for the scanning engine.

Not for debugging. Not for monitoring. But to bridge automation with human validation.

What Changed After Integration

Before:

• Courses had to be installed locally • Accessibility audits required screen sharing or on-site setups • Issue tracking was fragmented

After:

• Remote auditing from any browser • Zero local setup for reviewers • Centralized per-slide issue storage • Re-analysis replaces only that slide's issues • Structured WCAG + screen reader aligned checks • Faster review cycles

Single deployment. Single server. Structured output.

Sometimes infrastructure decisions aren't about scale. They're about enabling the right workflow.