Refresh header and footer with signet, gradient, nav pills and three-column footer; fix box-sizing of design boxes

This commit is contained in:
tleininger committed 2026-10-01 13:36:26 +02:00
1 parent a641beab16
commit d539fde09d
10 files changed
+407 -59

No files matched your search

+37
View File
@@ -115,6 +115,30 @@ public sealed partial class RouteSmokeTests : IDisposable
html.ShouldNotContain("href=\"/draft\""); // public=false, filtered out
}
[Fact]
public async Task Footer_links_every_public_header_and_footer_page_in_order()
{
// The footer repeats the header pages as "Schnellzugriff" and then lists the
// footer pages, each column in its order field. Only the <footer> is checked,
// so the header menu cannot make the test pass on its own. The expected list
// mirrors the fixture's pages; the draft (public=false) must be missing.
var client = _factory.CreateClient();
var html = await client.GetStringAsync(new Uri("/", UriKind.Relative));
var footer = FooterElement().Match(html);
footer.Success.ShouldBeTrue();
var hrefs = Href().Matches(footer.Value).Select(match => match.Groups[1].Value);
hrefs.ShouldBe(
[
"/", "/board", "/patrons", "/faqs", "/downloads", "/posts", "/events",
"/contact", "/imprint", "/privacy", "/faq-lunch",
]);
footer.Value.ShouldContain("Schnellzugriff");
footer.Value.ShouldContain("Weiteres");
}
[Fact]
public async Task Home_renders_the_embeds_its_page_opts_into()
{
@@ -245,4 +269,17 @@ public sealed partial class RouteSmokeTests : IDisposable
/// </summary>
[GeneratedRegex("""(?:\b(?:src|srcset)\s*=\s*|<link\b[^>]*\bhref\s*=\s*|url\(\s*|@import\s+)["']?\s*(?:https?:)?//""", RegexOptions.IgnoreCase)]
private static partial Regex ForeignResource();
/// <summary>
/// Matches the page's <c>&lt;footer&gt;</c> element, from its opening tag to the
/// closing one. The layout renders exactly one footer and nests no other.
/// </summary>
[GeneratedRegex("""<footer\b.*?</footer>""", RegexOptions.Singleline)]
private static partial Regex FooterElement();
/// <summary>
/// Matches an <c>href</c> attribute and captures its value.
/// </summary>
[GeneratedRegex(@"\bhref=""([^""]*)""")]
private static partial Regex Href();
}