A rewrite of federated wiki core javascript intends to modernize by replacing jQuery and CoffeeScript with new module features now broadly implemented both client and server side. We consider how we can build and maintain useful test suites that keep progress moving smoothly forward.
# Inspiration
Cucumber separated tests from ad-hoc parsers that could extract data to be applied to work in progress. This made the tests appear as specifications that had meaning to programmers and non-programmers alike. wikipedia
Swim collected widget html as batch tests ran and presented them in compact and browsable swim-lane diagrams suitable for understanding long-running, multi-participant transactions, notably Eclipse new-committer elections. pdf
# Strategy
We like deno on the server because it also embraces modules and related javascript standards-based enhancements.
We will move module boundaries to separate visual details from important semantic sequences that create the feel of an interface independent from its rendering in a DOM.
We propose to reimplement core javascript as a lineup of panels rendering computationally rich views into page json fetched from the existing federation. To this we add standard enhancements and dynamically loaded plugins.
# Pilot
We have several pilot implementations starting with Seran Wiki and now the Wiki-21 home for current work. github
Soon to be included in Wiki-21 is the line.js prototype that runs behind test.js on the server and debug.html in the browser. github wiki html
Run test.js server-side from small.fed.wiki assets.
deno run --allow-net --reload \ http://small.fed.wiki/assets/exp/test.js
# ToDo
Revise test.js to navigate deterministically from a starting point to a conclusion reporting test results as it goes. ✔︎
Create a Pragma plugin that can guide test.js and contain expected results to be checked as test.js runs. ✔︎
Provide a script-based page json generator so that test case wiki sites are easily stored and edited in github.
Provide a mechanism for writing tests for plugins not yet available. See Test Driven Plugins