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:
Brian R. Bondy
2025-09-08 15:23:26 -04:00
committed by GitHub
parent c19ccabbc7
commit 720533d115
2 changed files with 9 additions and 6 deletions
@@ -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);
}
+3 -2
View File
@@ -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>