diff --git a/web/packages/selfhosted/test/js_api/.eslintrc.json b/web/packages/selfhosted/test/js_api/.eslintrc.json new file mode 100644 index 000000000..2ad932a01 --- /dev/null +++ b/web/packages/selfhosted/test/js_api/.eslintrc.json @@ -0,0 +1,8 @@ +{ + "env": { + "mocha": true + }, + "globals": { + "browser": true + } +} diff --git a/web/packages/selfhosted/test/js_api/load.js b/web/packages/selfhosted/test/js_api/load.js new file mode 100644 index 000000000..d8686dc21 --- /dev/null +++ b/web/packages/selfhosted/test/js_api/load.js @@ -0,0 +1,17 @@ +const { js_api_before, play_and_monitor } = require("../polyfill/utils"); +const { use } = require("chai"); +const chaiHtml = require("chai-html"); + +use(chaiHtml); + +describe("RufflePlayer.load", () => { + js_api_before(); + + it("loads and plays a URL", () => { + const player = browser.$(""); + browser.execute((player) => { + player.load("/test_assets/example.swf"); + }, player); + play_and_monitor(browser, player); + }); +}); diff --git a/web/packages/selfhosted/test/js_api/metadata.js b/web/packages/selfhosted/test/js_api/metadata.js new file mode 100644 index 000000000..ffc1302d6 --- /dev/null +++ b/web/packages/selfhosted/test/js_api/metadata.js @@ -0,0 +1,21 @@ +const { js_api_before } = require("../polyfill/utils"); +const { expect, use } = require("chai"); +const chaiHtml = require("chai-html"); + +use(chaiHtml); + +describe("RufflePlayer.metadata", () => { + js_api_before("/test_assets/example.swf"); + + it("has metadata after load", () => { + const player = browser.$(""); + const metadata = browser.execute((player) => player.metadata, player); + expect(metadata).to.eql({ + width: 550, + height: 400, + frameRate: 24, + numFrames: 1, + swfVersion: 15, + }); + }); +}); diff --git a/web/packages/selfhosted/test/polyfill/utils.js b/web/packages/selfhosted/test/polyfill/utils.js index 936c3ecb1..899272731 100644 --- a/web/packages/selfhosted/test/polyfill/utils.js +++ b/web/packages/selfhosted/test/polyfill/utils.js @@ -112,6 +112,32 @@ function open_test(browser, absolute_dir, file_name) { browser.url(`http://localhost:4567/test/polyfill/${dir_name}/${file_name}`); } +/** Test set-up for basic JS API testing. */ +function js_api_before(swf) { + let player = null; + before("Loads the test", () => { + browser.url("http://localhost:4567/test_assets/js_api.html"); + + inject_ruffle_and_wait(browser); + + player = browser.execute(() => { + const ruffle = window.RufflePlayer.newest(); + const player = ruffle.createPlayer(); + const container = document.getElementById("test-container"); + container.appendChild(player); + return player; + }); + + if (swf) { + browser.execute((player) => { + player.load("/test_assets/example.swf"); + }, player); + play_and_monitor(browser, player); + } + }); + return player; +} + module.exports = { is_ruffle_loaded, wait_for_ruffle, @@ -120,4 +146,5 @@ module.exports = { inject_ruffle_and_wait, open_test, setup_error_handler, + js_api_before, }; diff --git a/web/packages/selfhosted/test_assets/js_api.html b/web/packages/selfhosted/test_assets/js_api.html new file mode 100644 index 000000000..cd63a9d69 --- /dev/null +++ b/web/packages/selfhosted/test_assets/js_api.html @@ -0,0 +1,12 @@ + + + + + Ruffle JS API Test + + + +
+
+ + diff --git a/web/packages/selfhosted/wdio.conf.js b/web/packages/selfhosted/wdio.conf.js index 971908bd4..ba013bbd4 100644 --- a/web/packages/selfhosted/wdio.conf.js +++ b/web/packages/selfhosted/wdio.conf.js @@ -27,7 +27,7 @@ exports.config = { // NPM script (see https://docs.npmjs.com/cli/run-script) then the current working // directory is where your package.json resides, so `wdio` will be called from there. // - specs: ["./test/polyfill/**/test.js"], + specs: ["./test/polyfill/**/test.js", "./test/js_api/*.js"], // Patterns to exclude. exclude: [ // 'path/to/excluded/files'