We present Quickstrom, a property-based testing system for acceptance testing
of interactive applications. Using Quickstrom, programmers can specify the
behaviour of web applications as properties in our testing-oriented dialect of
Linear Temporal Logic (LTL) called QuickLTL, and then automatically test their
application against the given specification with hundreds of automatically
generated interactions. QuickLTL extends existing finite variants of LTL for
the testing use-case, determining likely outcomes from partial traces whose
minimum length is itself determined by the LTL formula. This temporal logic is
embedded in our specification language, Specstrom, which is designed to be
approachable to web programmers, expressive for writing specifications, and
easy to analyse. Because Quickstrom tests only user-facing behaviour, it is
agnostic to the implementation language of the system under test. We therefore
formally specify and test many implementations of the popular TodoMVC
benchmark, used for evaluation and comparison across various web frontend
frameworks and languages. Our tests uncovered bugs in almost half of the
available implementations.Comment: 13 pages, this is a technical report of a paper to appear at
Programming Languages Design and Implementation (PLDI 2022