Files
decePubClient/tests/e2e/Mobile/DesktopUnchangedTests.cs
T

43 lines
1.7 KiB
C#
Raw Normal View History

2026-10-06 22:40:28 +02:00
using decePubClient.E2E.Support;
using Microsoft.Playwright;
namespace decePubClient.E2E.Mobile
{
// What phones get stays on phones: at 1440x900 with a mouse the controls keep daisyUI's sizes, measured on probes made
// with the app's own classes, and the nav menu stays open beside the feed.
[Trait("Category", "Mobile")]
public sealed class DesktopUnchangedTests(Browser browser)
{
const string Probe = """
() => Object.fromEntries(["btn", "btn btn-sm", "btn btn-xs", "input", "input input-sm"].map(classes => {
const el = document.createElement(classes.startsWith("input") ? "input" : "button")
el.className = classes
document.body.append(el)
const height = el.getBoundingClientRect().height
el.remove()
return [classes, height]
}))
""";
[Fact]
public async Task Desktop_keeps_its_sizes()
{
var persona = Pasture.Personas().GroupBy(p => p.Root).OrderByDescending(g => g.Count()).First().First();
await using var session = await SignIn.As(browser, persona);
var page = session.Page;
await Results.Cell("client.mobile.desktop", "privapub", "desktop", async () =>
{
Assert.False(await page.EvaluateAsync<bool>("() => matchMedia('(pointer: coarse)').matches"), "the desktop session has a coarse pointer");
var heights = await page.EvaluateAsync<Dictionary<string, double>>(Probe);
Assert.Equal(40, heights["btn"], 0.5);
Assert.Equal(32, heights["btn btn-sm"], 0.5);
Assert.Equal(24, heights["btn btn-xs"], 0.5);
Assert.Equal(40, heights["input"], 0.5);
Assert.Equal(32, heights["input input-sm"], 0.5);
await Assertions.Expect(page.Locator("nav a.btn").First).ToBeVisibleAsync();
await session.AssertGuards();
}, page);
}
}
}