From a4a2d2b3c3bf63decc5e007d33c3fbd31fa53304 Mon Sep 17 00:00:00 2001 From: Stevan Freeborn <65925598+StevanFreeborn@users.noreply.github.com> Date: Fri, 12 Apr 2024 19:51:16 -0500 Subject: [PATCH] tests: add tests for copy button and heading links --- test/Blog.Tests/EndToEnd/PostTests.cs | 37 +++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) 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() {