tests: add tests for copy button and heading links

This commit is contained in:
Stevan Freeborn
2024-04-12 19:51:16 -05:00
parent fd5ab56813
commit a4a2d2b3c3
+37
View File
@@ -39,6 +39,43 @@ public class PostTests : BlogTest
await Expect(content).ToBeVisibleAsync();
}
[Test]
public async Task Post_WhenNavigatedToAndPostContainsCodeBlock_ItShouldDisplayCopyButton()
{
await Page.Context.GrantPermissionsAsync(["clipboard-read"]);
await Page.GotoAsync($"/{TestPostSlug}");
var copyButton = Page.GetByRole(AriaRole.Button, new() { Name = "Copy" });
await Expect(copyButton).ToBeVisibleAsync();
await copyButton.ClickAsync();
var clipboard = await Page.EvaluateAsync<string>("navigator.clipboard.readText()");
clipboard.Should().Be(
"""
def greet(name):
print(f"Hello, {name}!")
greet("World")
"""
);
await Page.Context.ClearPermissionsAsync();
}
[Test]
public async Task Post_WhenNavigatedToAndPostContainsHeadings_ItShouldDisplayLinkToHeading()
{
await Page.GotoAsync($"/{TestPostSlug}");
var heading = Page.GetByRole(AriaRole.Heading, new() { Name = "Text Formatting" });
await Expect(heading).ToBeVisibleAsync();
var link = heading.GetByRole(AriaRole.Link);
await Expect(link).ToBeVisibleAsync();
await link.ClickAsync();
Page.Url.Should().EndWith("#text-formatting");
}
[Test]
public async Task Post_WhenNavigatedToAndPostDoesNotExist_ItShouldDisplay404()
{