43 lines
1.7 KiB
C#
43 lines
1.7 KiB
C#
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);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|