# End to end testing framework ## wrapper The wrapper script (compiled as `run_tests`) runs multiple tests on Jellyfin servers to verify that the plugin works as intended. It tests: - Introduction timestamp accuracy (using `verifier`) - Web interface functionality (using `selenium/main.py`) ## verifier ### Description This program is responsible for: * Saving all discovered introduction timestamps into a report * Comparing two reports against each other to find episodes that: * Are missing introductions in both reports * Have introductions in both reports, but with different timestamps * Newly discovered introductions * Introductions that were discovered previously, but not anymore * Validating the schema of returned `Intro` objects from the `/IntroTimestamps` API endpoint ### Usage examples * Generate intro timestamp report from a local server: * `./verifier -address http://127.0.0.1:8096 -key api_key` * Generate intro timestamp report from a remote server, polling for task completion every 20 seconds: * `./verifier -address https://example.com -key api_key -poll 20s -o example.json` * Compare two previously generated reports: * `./verifier -r1 v0.1.5.json -r2 v0.1.6.json` * Validate the API schema for three episodes: * `./verifier -address http://127.0.0.1:8096 -key api_key -validate id1,id2,id3` ## Selenium web interface tests Selenium is used to verify that the plugin's web interface works as expected. It simulates a user: * Clicking the skip intro button * Checks that clicking the button skips the intro and keeps playing the video * Changing settings (will be added in the future) * Maximum degree of parallelism * Selecting libraries for analysis * Introduction requirements * Auto skip * Show/hide skip prompt * Timestamp editor (will be added in the future) * Displays timestamps * Modifies timestamps * Erases season timestamps * Fingerprint visualizer (will be added in the future) * Suggests shifts * Visualizer canvas is drawn on