|
3 | 3 |
|
4 | 4 | using System; |
5 | 5 | using System.Collections.Generic; |
| 6 | +using System.Linq; |
6 | 7 | using System.Threading.Tasks; |
7 | 8 | using Microsoft.Extensions.Logging; |
8 | 9 | using Microsoft.Playwright; |
@@ -56,6 +57,10 @@ public PlaywrightTestInfraFunctionTests() |
56 | 57 | MockElementHandle = new Mock<IElementHandle>(MockBehavior.Strict); |
57 | 58 | MockUserManager = new Mock<IUserManager>(MockBehavior.Strict); |
58 | 59 | MockTestWebProvider = new Mock<ITestWebProvider>(MockBehavior.Strict); |
| 60 | + |
| 61 | + // Mock Chromium behavior |
| 62 | + MockPlaywrightObject.SetupGet(x => x.Chromium).Returns(new Mock<IBrowserType>(MockBehavior.Strict).Object); |
| 63 | + MockPlaywrightObject.SetupGet(x => x.Chromium.Name).Returns("chromium"); |
59 | 64 | } |
60 | 65 |
|
61 | 66 | [Theory] |
@@ -154,6 +159,58 @@ public async Task SetupAsyncTest(string browser, string? device, int? screenWidt |
154 | 159 | MockBrowser.Verify(x => x.NewContextAsync(It.Is<BrowserNewContextOptions>(y => verifyBrowserContextOptions(y))), Times.Once()); |
155 | 160 | } |
156 | 161 |
|
| 162 | + [Theory] |
| 163 | + [InlineData("chromium", null, true, true)] |
| 164 | + [InlineData("Chromium", "msedge", true, true)] |
| 165 | + [InlineData("Chromium", "chrome", true, true)] |
| 166 | + [InlineData("Chromium", "msedge", false, false)] |
| 167 | + [InlineData("cHromium", null, false, false)] |
| 168 | + [InlineData("webkit", null, true, false)] |
| 169 | + [InlineData("firefox", null, false, false)] |
| 170 | + public async Task SetupAsync_HeadlessModeWithChromium_AddsNewHeadlessArgs(string browser, string? channel, bool headless, bool expectedResult) |
| 171 | + { |
| 172 | + // Arrange |
| 173 | + MockTestState.Setup(x => x.GetTestEngineModules()).Returns(new List<Microsoft.PowerApps.TestEngine.Modules.ITestEngineModule>() { }); |
| 174 | + |
| 175 | + var testSettings = new TestSettings |
| 176 | + { |
| 177 | + Headless = headless, |
| 178 | + Timeout = 30000 |
| 179 | + }; |
| 180 | + |
| 181 | + var browserConfig = new BrowserConfiguration |
| 182 | + { |
| 183 | + Browser = browser, |
| 184 | + Channel = channel, |
| 185 | + }; |
| 186 | + |
| 187 | + MockTestState.Setup(ts => ts.GetTestSettings()).Returns(testSettings); |
| 188 | + MockSingleTestInstanceState.Setup(st => st.GetBrowserConfig()).Returns(browserConfig); |
| 189 | + MockSingleTestInstanceState.Setup(st => st.GetLogger()).Returns(MockLogger.Object); |
| 190 | + LoggingTestHelper.SetupMock(MockLogger); |
| 191 | + |
| 192 | + MockBrowserType.Setup(c => c.Name).Returns(browser); |
| 193 | + MockBrowserType.Setup(c => c.LaunchAsync(It.IsAny<BrowserTypeLaunchOptions>())) |
| 194 | + .ReturnsAsync(Mock.Of<IBrowser>()); |
| 195 | + MockPlaywrightObject.Setup(p => p[browser]).Returns(MockBrowserType.Object); |
| 196 | + |
| 197 | + var functions = new PlaywrightTestInfraFunctions( |
| 198 | + MockTestState.Object, |
| 199 | + MockSingleTestInstanceState.Object, |
| 200 | + MockFileSystem.Object, |
| 201 | + MockPlaywrightObject.Object |
| 202 | + ); |
| 203 | + |
| 204 | + // Act |
| 205 | + await functions.SetupAsync(Mock.Of<IUserManager>()); |
| 206 | + |
| 207 | + // Assert |
| 208 | + MockBrowserType.Verify(c => c.LaunchAsync(It.Is<BrowserTypeLaunchOptions>(options => |
| 209 | + options.Args != null && |
| 210 | + options.Args.Contains("--headless=new") |
| 211 | + )), expectedResult ? Times.Once : Times.Never); |
| 212 | + } |
| 213 | + |
157 | 214 | [Theory] |
158 | 215 | [InlineData("en-US")] |
159 | 216 | [InlineData("fr-FR")] |
|
0 commit comments