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,