diff --git a/.github/actions/setup-environment/action.yml b/.github/actions/setup-environment/action.yml index 855c3a19..5456d89a 100644 --- a/.github/actions/setup-environment/action.yml +++ b/.github/actions/setup-environment/action.yml @@ -22,7 +22,7 @@ runs: if: runner.os == 'Linux' uses: oven-sh/setup-bun@v2 with: - bun-version: latest + bun-download-url: "https://github.com/oven-sh/bun/releases/latest/download/bun-linux-x64.zip" - name: Run Linux setup script if: runner.os == 'Linux' diff --git a/src/AvaloniaXKCD.Tests/BrowserLocalizationTests.cs b/src/AvaloniaXKCD.Tests/BrowserLocalizationTests.cs index c7c26933..bd477018 100644 --- a/src/AvaloniaXKCD.Tests/BrowserLocalizationTests.cs +++ b/src/AvaloniaXKCD.Tests/BrowserLocalizationTests.cs @@ -12,6 +12,7 @@ namespace AvaloniaXKCD.Tests; [Timeout(5 * 60 * 1000)] // 5 minutes [Arguments("chromium", "en-US")] [Arguments("chromium", "es-ES")] +[Retry(2)] public class BrowserLocalizationTests(string browser, string locale) : BrowserBaseTest(browser) { public override BrowserNewContextOptions ContextOptions(TestContext testContext) diff --git a/src/AvaloniaXKCD.Tests/BrowserTests.cs b/src/AvaloniaXKCD.Tests/BrowserTests.cs index b16e8f71..7f4d68e8 100644 --- a/src/AvaloniaXKCD.Tests/BrowserTests.cs +++ b/src/AvaloniaXKCD.Tests/BrowserTests.cs @@ -3,6 +3,7 @@ namespace AvaloniaXKCD.Tests; [Timeout(5 * 60 * 1000)] // 5 minutes [Arguments("chromium")] [Arguments("firefox")] +[Retry(2)] public class BrowserTests(string browser) : BrowserBaseTest(browser) { [Test] diff --git a/src/AvaloniaXKCD.Tests/TestBases/BrowserBaseTest.cs b/src/AvaloniaXKCD.Tests/TestBases/BrowserBaseTest.cs index 7d4b89b2..ea5aa0d5 100644 --- a/src/AvaloniaXKCD.Tests/TestBases/BrowserBaseTest.cs +++ b/src/AvaloniaXKCD.Tests/TestBases/BrowserBaseTest.cs @@ -1,8 +1,26 @@ namespace AvaloniaXKCD.Tests.TestBases; -public abstract class BrowserBaseTest(string browser) : PageTest +public abstract class BrowserBaseTest : PageTest { - public override string BrowserName => browser; + private readonly string _browserName; + + protected BrowserBaseTest(string browser) + : base(new BrowserTypeLaunchOptions + { + Timeout = 90_000, // 90 second timeout for browser launch + Args = + [ + // Flags for limited resource environments like CI + "--disable-dev-shm-usage", + "--no-sandbox", + "--disable-setuid-sandbox" + ] + }) + { + _browserName = browser; + } + + public override string BrowserName => _browserName; [ClassDataSource(Shared = SharedType.PerAssembly)] public required AvaloniaBrowserProject AvaloniaManager { get; init; } diff --git a/src/Directory.Build.props b/src/Directory.Build.props index 9b1307d9..bd78831a 100644 --- a/src/Directory.Build.props +++ b/src/Directory.Build.props @@ -33,6 +33,6 @@ - $(NoWarn);NU1902 + $(NoWarn);NU1901;NU1902;NU1903;NU1904 \ No newline at end of file