diff --git a/test/Blog.Tests/EndToEnd/PostTests.cs b/test/Blog.Tests/EndToEnd/PostTests.cs index b866bc4..f3ecc81 100644 --- a/test/Blog.Tests/EndToEnd/PostTests.cs +++ b/test/Blog.Tests/EndToEnd/PostTests.cs @@ -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("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() {