A web app for managing safety inspections of inflatable play equipment like bouncy castles and slides. Developed by Chobble CIC, a community interest company in Manchester, UK.
play-test helps inspectors track and document safety checks on inflatable play equipment. It handles equipment records, inspection forms, photo management, and PDF report generation. Makes repeat inspections of the same units quick and straightforward.
A public instance is live at play-test.co.uk.
- Store unit details, dimensions, and manufacturer info
- Keep inspection history for each piece of equipment
- Upload photos with automatic processing
- Quick access to previous inspection data
- Seven assessment types covering different safety aspects
- Draft inspections you can edit before finalising
- Generate PDF reports with QR codes
- Built-in safety calculations (anchor points, user capacity, etc.)
- Company accounts with branding
- User management and access control
- Upload your logo for PDF reports
- Works on phones, tablets, and desktops
- Export any unit or inspection as PDF or JSON
- Shows safety standards right where you need them
- Dark/light theme
- Minimal dependencies
- Full internationalisation support
- No JavaScript required for core functionality
Quickest way to try it out:
docker pull dockerstefn/play-test
docker run -p 3000:3000 dockerstefn/play-testProduction builds exclude development, test and CI-only gem groups, including
licensed and its Rugged dependency. Licence auditing still runs in CI.
The BUNDLE_WITHOUT build argument can be overridden for non-production images.
Uses devenv for easy environment setup:
# Clone the repo
git clone https://github.com/yourusername/play-test.git
cd play-test
# Enter the development environment (run `devenv shell` again whenever you need it)
devenv shell
# Standard Rails setup
bundle install
rails db:create db:migrate db:seed
rails server# Requires the Ruby version in .ruby-version and SQLite
bundle install
rails db:setup
rails serverUbuntu 26.04 also requires libjitterentropy3-dev for Rugged's static OpenSSL
link during bundle install. CI installs it in the shared setup action;
the devenv configuration is unchanged.
The shared CI setup refreshes APT indexes and installs packages directly. Failed downloads stop setup instead of leaving missing native libraries for Rails to load.
Currently over 90% test coverage:
# Run all tests with coverage
bin/test
# Check specific file coverage
bin/coverage_check app/models/inspection.rb
# View detailed HTML report
open coverage/index.htmlTests use a separate SQLite WAL database per process. Ordinary examples use Rails' transactional fixtures, which pin the database connection across request cleanup. Do not replace these with unpinned DatabaseCleaner transactions: Rails can return their still-open transactions to the pool between requests.
Examples tagged js: true or concurrent use committed data and
DatabaseCleaner truncation after Capybara finishes pending requests. Tag
examples that make database requests from additional threads accordingly.
IN_MEMORY_DB=true remains an explicit option for mutant's isolated forks.
Security scans run bin/brakeman --no-pager, which requires the latest
Brakeman release. Update it with bundle update brakeman --conservative
when the version check fails.
If you want to help improve Play-Test, a great way would be to write some more rspec and Capybara tests. Check out coverage.play-test.co.uk for an up-to-date test coverage breakdown.
- Rails 8.0+ - With minimal gems
- SQLite - No fancy databases (yet?)
- RSpec & Capybara - 90%+ test coverage
- Semantic HTML + MVP.css - Simple CSS
- Turbo for progressive JS enhancement
play-test is developed by Chobble CIC, a community interest company based in Manchester, UK. As a CIC, Chobble is regulated to operate in the public interest rather than for private shareholders — surplus profits are reinvested in community activities like open source development and reduced rates for charities and community organisations.
Chobble's principles include transparency, fair pricing, client ownership of their tools and data, and ethical boundaries. All source code is shared openly, and there's no vendor lock-in.
Pull requests welcome! This is an open source project and we're not affiliated with any industry bodies, so improvements from anyone are appreciated.
AGPLv3 - see LICENSE file. This means you can use, modify, and distribute the code, but you must share any improvements.