diff --git a/web/packages/selfhosted/test/polyfill/embed_default/test.js b/web/packages/selfhosted/test/polyfill/embed_default/test.js index c56ce4537..4acd24d8b 100644 --- a/web/packages/selfhosted/test/polyfill/embed_default/test.js +++ b/web/packages/selfhosted/test/polyfill/embed_default/test.js @@ -1,4 +1,8 @@ -const { inject_ruffle_and_wait, open_test } = require("../utils"); +const { + inject_ruffle_and_wait, + open_test, + play_and_monitor, +} = require("../utils"); const { expect, use } = require("chai"); const chaiHtml = require("chai-html"); const fs = require("fs"); @@ -16,4 +20,11 @@ describe("Embed tag", () => { const expected = fs.readFileSync(`${__dirname}/expected.html`, "utf8"); expect(actual).html.to.equal(expected); }); + + it("Plays a movie", () => { + play_and_monitor( + browser, + browser.$("#test-container").$("") + ); + }); }); diff --git a/web/packages/selfhosted/test/polyfill/embed_insensitive/test.js b/web/packages/selfhosted/test/polyfill/embed_insensitive/test.js index c26bf1431..c7ab4ff45 100644 --- a/web/packages/selfhosted/test/polyfill/embed_insensitive/test.js +++ b/web/packages/selfhosted/test/polyfill/embed_insensitive/test.js @@ -1,4 +1,8 @@ -const { open_test, inject_ruffle_and_wait } = require("../utils"); +const { + open_test, + inject_ruffle_and_wait, + play_and_monitor, +} = require("../utils"); const { expect, use } = require("chai"); const chaiHtml = require("chai-html"); const fs = require("fs"); @@ -18,4 +22,11 @@ describe("Embed with case-insensitive MIME type", () => { const expected = fs.readFileSync(`${__dirname}/expected.html`, "utf8"); expect(actual).html.to.equal(expected); }); + + it("Plays a movie", () => { + play_and_monitor( + browser, + browser.$("#test-container").$("") + ); + }); }); diff --git a/web/packages/selfhosted/test/polyfill/embed_missing_type/test.js b/web/packages/selfhosted/test/polyfill/embed_missing_type/test.js index 8bb7c4a81..6b53a0e1e 100644 --- a/web/packages/selfhosted/test/polyfill/embed_missing_type/test.js +++ b/web/packages/selfhosted/test/polyfill/embed_missing_type/test.js @@ -1,4 +1,8 @@ -const { inject_ruffle_and_wait, open_test } = require("../utils"); +const { + inject_ruffle_and_wait, + open_test, + play_and_monitor, +} = require("../utils"); const { expect, use } = require("chai"); const chaiHtml = require("chai-html"); const fs = require("fs"); @@ -16,4 +20,11 @@ describe("Embed without type attribute", () => { const expected = fs.readFileSync(`${__dirname}/expected.html`, "utf8"); expect(actual).html.to.equal(expected); }); + + it("Plays a movie", () => { + play_and_monitor( + browser, + browser.$("#test-container").$("") + ); + }); }); diff --git a/web/packages/selfhosted/test/polyfill/object_MIME_insensitive/test.js b/web/packages/selfhosted/test/polyfill/object_MIME_insensitive/test.js index 4a40cebb4..ffd89bf5c 100644 --- a/web/packages/selfhosted/test/polyfill/object_MIME_insensitive/test.js +++ b/web/packages/selfhosted/test/polyfill/object_MIME_insensitive/test.js @@ -1,4 +1,8 @@ -const { open_test, inject_ruffle_and_wait } = require("../utils"); +const { + open_test, + inject_ruffle_and_wait, + play_and_monitor, +} = require("../utils"); const { expect, use } = require("chai"); const chaiHtml = require("chai-html"); const fs = require("fs"); @@ -18,4 +22,11 @@ describe("Object with case-insensitive MIME type", () => { const expected = fs.readFileSync(`${__dirname}/expected.html`, "utf8"); expect(actual).html.to.equal(expected); }); + + it("Plays a movie", () => { + play_and_monitor( + browser, + browser.$("#test-container").$("") + ); + }); }); diff --git a/web/packages/selfhosted/test/polyfill/object_clsid_insensitive/test.js b/web/packages/selfhosted/test/polyfill/object_clsid_insensitive/test.js index 3dbf70ad2..62b17cab1 100644 --- a/web/packages/selfhosted/test/polyfill/object_clsid_insensitive/test.js +++ b/web/packages/selfhosted/test/polyfill/object_clsid_insensitive/test.js @@ -1,4 +1,8 @@ -const { open_test, inject_ruffle_and_wait } = require("../utils"); +const { + open_test, + inject_ruffle_and_wait, + play_and_monitor, +} = require("../utils"); const { expect, use } = require("chai"); const chaiHtml = require("chai-html"); const fs = require("fs"); @@ -18,4 +22,11 @@ describe("Object with case-insensitive clsid", () => { const expected = fs.readFileSync(`${__dirname}/expected.html`, "utf8"); expect(actual).html.to.equal(expected); }); + + it("Plays a movie", () => { + play_and_monitor( + browser, + browser.$("#test-container").$("") + ); + }); }); diff --git a/web/packages/selfhosted/test/polyfill/object_data/test.js b/web/packages/selfhosted/test/polyfill/object_data/test.js index 5e7bdc4ec..4d410d122 100644 --- a/web/packages/selfhosted/test/polyfill/object_data/test.js +++ b/web/packages/selfhosted/test/polyfill/object_data/test.js @@ -1,4 +1,8 @@ -const { open_test, inject_ruffle_and_wait } = require("../utils"); +const { + open_test, + inject_ruffle_and_wait, + play_and_monitor, +} = require("../utils"); const { expect, use } = require("chai"); const chaiHtml = require("chai-html"); const fs = require("fs"); @@ -18,4 +22,11 @@ describe("Object with only data attribute", () => { const expected = fs.readFileSync(`${__dirname}/expected.html`, "utf8"); expect(actual).html.to.equal(expected); }); + + it("Plays a movie", () => { + play_and_monitor( + browser, + browser.$("#test-container").$("") + ); + }); }); diff --git a/web/packages/selfhosted/test/polyfill/object_default/test.js b/web/packages/selfhosted/test/polyfill/object_default/test.js index c78b0cb26..0273d691b 100644 --- a/web/packages/selfhosted/test/polyfill/object_default/test.js +++ b/web/packages/selfhosted/test/polyfill/object_default/test.js @@ -1,4 +1,8 @@ -const { inject_ruffle_and_wait, open_test } = require("../utils"); +const { + inject_ruffle_and_wait, + open_test, + play_and_monitor, +} = require("../utils"); const { expect, use } = require("chai"); const chaiHtml = require("chai-html"); const fs = require("fs"); @@ -16,4 +20,11 @@ describe("Object tag", () => { const expected = fs.readFileSync(`${__dirname}/expected.html`, "utf8"); expect(actual).html.to.equal(expected); }); + + it("Plays a movie", () => { + play_and_monitor( + browser, + browser.$("#test-container").$("") + ); + }); }); diff --git a/web/packages/selfhosted/test/polyfill/object_ie_only/test.js b/web/packages/selfhosted/test/polyfill/object_ie_only/test.js index 67577052e..7a12bab57 100644 --- a/web/packages/selfhosted/test/polyfill/object_ie_only/test.js +++ b/web/packages/selfhosted/test/polyfill/object_ie_only/test.js @@ -1,4 +1,8 @@ -const { inject_ruffle_and_wait, open_test } = require("../utils"); +const { + inject_ruffle_and_wait, + open_test, + play_and_monitor, +} = require("../utils"); const { expect, use } = require("chai"); const chaiHtml = require("chai-html"); const fs = require("fs"); @@ -16,4 +20,11 @@ describe("Object for old IE must work everywhere", () => { const expected = fs.readFileSync(`${__dirname}/expected.html`, "utf8"); expect(actual).html.to.equal(expected); }); + + it("Plays a movie", () => { + play_and_monitor( + browser, + browser.$("#test-container").$("") + ); + }); }); diff --git a/web/packages/selfhosted/test/polyfill/object_missing_type/test.js b/web/packages/selfhosted/test/polyfill/object_missing_type/test.js index 23762f5d6..e460f7709 100644 --- a/web/packages/selfhosted/test/polyfill/object_missing_type/test.js +++ b/web/packages/selfhosted/test/polyfill/object_missing_type/test.js @@ -1,4 +1,8 @@ -const { inject_ruffle_and_wait, open_test } = require("../utils"); +const { + inject_ruffle_and_wait, + open_test, + play_and_monitor, +} = require("../utils"); const { expect, use } = require("chai"); const chaiHtml = require("chai-html"); const fs = require("fs"); @@ -16,4 +20,11 @@ describe("Object without type attribute", () => { const expected = fs.readFileSync(`${__dirname}/expected.html`, "utf8"); expect(actual).html.to.equal(expected); }); + + it("Plays a movie", () => { + play_and_monitor( + browser, + browser.$("#test-container").$("") + ); + }); }); diff --git a/web/packages/selfhosted/test/polyfill/object_missing_type_and_classid/test.js b/web/packages/selfhosted/test/polyfill/object_missing_type_and_classid/test.js index 6e0055bc2..45bf123f6 100644 --- a/web/packages/selfhosted/test/polyfill/object_missing_type_and_classid/test.js +++ b/web/packages/selfhosted/test/polyfill/object_missing_type_and_classid/test.js @@ -1,4 +1,8 @@ -const { inject_ruffle_and_wait, open_test } = require("../utils"); +const { + inject_ruffle_and_wait, + open_test, + play_and_monitor, +} = require("../utils"); const { expect, use } = require("chai"); const chaiHtml = require("chai-html"); const fs = require("fs"); @@ -16,4 +20,11 @@ describe("Object without type and classid attributes", () => { const expected = fs.readFileSync(`${__dirname}/expected.html`, "utf8"); expect(actual).html.to.equal(expected); }); + + it("Plays a movie", () => { + play_and_monitor( + browser, + browser.$("#test-container").$("") + ); + }); }); diff --git a/web/packages/selfhosted/test/polyfill/object_unexpected_string/test.js b/web/packages/selfhosted/test/polyfill/object_unexpected_string/test.js index 01db9c721..d39466b22 100644 --- a/web/packages/selfhosted/test/polyfill/object_unexpected_string/test.js +++ b/web/packages/selfhosted/test/polyfill/object_unexpected_string/test.js @@ -1,4 +1,8 @@ -const { inject_ruffle_and_wait, open_test } = require("../utils"); +const { + inject_ruffle_and_wait, + open_test, + play_and_monitor, +} = require("../utils"); const { expect, use } = require("chai"); const chaiHtml = require("chai-html"); const fs = require("fs"); @@ -16,4 +20,11 @@ describe("Object with unexpected string", () => { const expected = fs.readFileSync(`${__dirname}/expected.html`, "utf8"); expect(actual).html.to.equal(expected); }); + + it("Plays a movie", () => { + play_and_monitor( + browser, + browser.$("#test-container").$("") + ); + }); }); diff --git a/web/packages/selfhosted/test/polyfill/object_wrong_type/test.js b/web/packages/selfhosted/test/polyfill/object_wrong_type/test.js index e0ff9b930..2e6c00a61 100644 --- a/web/packages/selfhosted/test/polyfill/object_wrong_type/test.js +++ b/web/packages/selfhosted/test/polyfill/object_wrong_type/test.js @@ -1,4 +1,8 @@ -const { inject_ruffle_and_wait, open_test } = require("../utils"); +const { + inject_ruffle_and_wait, + open_test, + play_and_monitor, +} = require("../utils"); const { expect, use } = require("chai"); const chaiHtml = require("chai-html"); const fs = require("fs"); @@ -16,4 +20,11 @@ describe("Object with wrong type attribute value", () => { const expected = fs.readFileSync(`${__dirname}/expected.html`, "utf8"); expect(actual).html.to.equal(expected); }); + + it("Plays a movie", () => { + play_and_monitor( + browser, + browser.$("#test-container").$("") + ); + }); }); diff --git a/web/packages/selfhosted/test/polyfill/utils.js b/web/packages/selfhosted/test/polyfill/utils.js index 98cc20a48..a949018c0 100644 --- a/web/packages/selfhosted/test/polyfill/utils.js +++ b/web/packages/selfhosted/test/polyfill/utils.js @@ -24,6 +24,45 @@ function inject_ruffle(browser) { }); } +function play_and_monitor(browser, player) { + // TODO: better way to test for this in the API + browser.waitUntil( + () => { + return browser.execute((player) => { + return ( + player.play_button_clicked !== undefined && player.instance + ); + }, player); + }, + { + timeoutMsg: "Expected player to have initialized", + } + ); + + browser.execute((player) => { + player.__ruffle_log__ = ""; + player.trace_observer = (msg) => { + player.__ruffle_log__ += msg + "\n"; + }; + + // TODO: make this an actual intended api... + player.play_button_clicked(); + }, player); + + browser.waitUntil( + () => { + return ( + browser.execute((player) => { + return player.__ruffle_log__; + }, player) === "Hello from Flash!\n" + ); + }, + { + timeoutMsg: "Expected Ruffle to trace a message", + } + ); +} + function inject_ruffle_and_wait(browser) { inject_ruffle(browser); wait_for_ruffle(browser); @@ -40,6 +79,7 @@ function open_test(browser, absolute_dir, file_name) { module.exports = { is_ruffle_loaded, wait_for_ruffle, + play_and_monitor, inject_ruffle, inject_ruffle_and_wait, open_test,