luisa-deaccessibilizer

Luisa: Leveraging User Interfaces in SwiftUI for Accessibility Training

Build workflow status Tests workflow status Test coverage

Luisa is a tool designed to intentionally remove accessibility features and degrade SwiftUI components, violating WCAG 2.2 guidelines. It helps developers learn how to identify accessibility issues or generate test samples for static accessibility analysis tools.

Luisa code transformation is powered by a set of fault transformation rules. Each rule targets specific code patterns in .swift files and apply a degradation. You can find the source code of each rule, along with the expected behavior and which WCAG success criteria it aims to violate in the src/transforming/rules/ folder or in the respective section at the documentation.

Luisa uses tree-sitter and the tree-sitter-swift grammar to generate a concrete syntax tree of a .swift source code file. Each fault transformation rule contains a query written in the tree-sitter query syntax to match specific code patterns, along with instructions on how to modify them.

Luisa can be used as a module for either Node.js and web environments (through the use of WebAssembly), or standalone as a CLI tool.

Luisa supports macOS and Linux machines. To run it locally, you'll need Node.js LTS and emscripten installed in your machine (to generate tree-sitter .wasm files). If you have homebrew installed, you can install emscripten by running brew install emscripten.

If you're running on macOS with Apple silicon, you should also have Rosetta 2 installed. You can install it by running softwareupdate --install-rosetta in the Terminal.