Fix WebAudio farbling test timing issue (#31079)
The test was checking document.title before the async WebAudio operations completed. Changed it to await the promise resolution instead of an immediate title check.
This commit is contained in:
@@ -31,6 +31,8 @@ using brave_shields::ControlType;
|
||||
|
||||
constexpr char kEmbeddedTestServerDirectory[] = "webaudio";
|
||||
constexpr char kTitleScript[] = "document.title;";
|
||||
constexpr char kWebAudioResultScript[] =
|
||||
"(async () => await window.webAudioAnalysisPromise)()";
|
||||
|
||||
class BraveWebAudioFarblingBrowserTest : public InProcessBrowserTest {
|
||||
public:
|
||||
@@ -120,7 +122,7 @@ IN_PROC_BROWSER_TEST_F(BraveWebAudioFarblingBrowserTest, FarbleWebAudio) {
|
||||
EXPECT_EQ(content::EvalJs(contents(), kTitleScript), "356");
|
||||
|
||||
ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), farbling2_url()));
|
||||
EXPECT_EQ(content::EvalJs(contents(), kTitleScript), "-971");
|
||||
EXPECT_EQ(content::EvalJs(contents(), kWebAudioResultScript), -971);
|
||||
|
||||
// Farbling level: balanced (default)
|
||||
// web audio: farbled audio data
|
||||
@@ -129,7 +131,7 @@ IN_PROC_BROWSER_TEST_F(BraveWebAudioFarblingBrowserTest, FarbleWebAudio) {
|
||||
EXPECT_EQ(content::EvalJs(contents(), kTitleScript), "7920");
|
||||
|
||||
ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), farbling2_url()));
|
||||
EXPECT_EQ(content::EvalJs(contents(), kTitleScript), "-1032");
|
||||
EXPECT_EQ(content::EvalJs(contents(), kWebAudioResultScript), -1032);
|
||||
|
||||
// Farbling level: off
|
||||
// web audio: original audio data
|
||||
@@ -138,7 +140,7 @@ IN_PROC_BROWSER_TEST_F(BraveWebAudioFarblingBrowserTest, FarbleWebAudio) {
|
||||
EXPECT_EQ(content::EvalJs(contents(), kTitleScript), "8000");
|
||||
|
||||
ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), farbling2_url()));
|
||||
EXPECT_EQ(content::EvalJs(contents(), kTitleScript), "-1031");
|
||||
EXPECT_EQ(content::EvalJs(contents(), kWebAudioResultScript), -1031);
|
||||
|
||||
// Farbling level: balanced (default), but webcompat exception enabled
|
||||
// web audio: original audio data
|
||||
@@ -150,5 +152,5 @@ IN_PROC_BROWSER_TEST_F(BraveWebAudioFarblingBrowserTest, FarbleWebAudio) {
|
||||
EXPECT_EQ(content::EvalJs(contents(), kTitleScript), "8000");
|
||||
|
||||
ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), farbling2_url()));
|
||||
EXPECT_EQ(content::EvalJs(contents(), kTitleScript), "-1031");
|
||||
EXPECT_EQ(content::EvalJs(contents(), kWebAudioResultScript), -1031);
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<title>Web Audio farbling test</title>
|
||||
</head>
|
||||
<body>
|
||||
<script type="module">
|
||||
<script>
|
||||
// Testing code adapted from PoC in https://hackerone.com/reports/2846851
|
||||
|
||||
const sumArray = (arr) => arr.reduce((sum, val) => sum + val, 0);
|
||||
@@ -41,9 +41,10 @@ async function analyzeAudio() {
|
||||
async function runTest() {
|
||||
const result = await analyzeAudio();
|
||||
document.title = result;
|
||||
return result;
|
||||
}
|
||||
|
||||
await runTest();
|
||||
window.webAudioAnalysisPromise = runTest();
|
||||
|
||||
</script>
|
||||
</body>
|
||||
|
||||
Reference in New Issue
Block a user