From 906f9c33937d3ecc4322d0f354753e919c8fb103 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Sun, 1 Feb 2026 14:31:02 +0000
Subject: [PATCH 1/2] Initial plan
From 9f5192dce341328234621f1a68b1ab89a6986f29 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Sun, 1 Feb 2026 14:36:28 +0000
Subject: [PATCH 2/2] Add textarea tests to TagHelperModelBindingTests
Co-authored-by: gunndabad <2041280+gunndabad@users.noreply.github.com>
---
.../TagHelperModelBindingTests/Tests.cs | 64 +++++++++++++++++++
.../Textarea.cshtml | 3 +
.../TextareaOverridden.cshtml | 8 +++
3 files changed, 75 insertions(+)
create mode 100644 tests/GovUk.Frontend.AspNetCore.IntegrationTests/TagHelperModelBindingTests/Textarea.cshtml
create mode 100644 tests/GovUk.Frontend.AspNetCore.IntegrationTests/TagHelperModelBindingTests/TextareaOverridden.cshtml
diff --git a/tests/GovUk.Frontend.AspNetCore.IntegrationTests/TagHelperModelBindingTests/Tests.cs b/tests/GovUk.Frontend.AspNetCore.IntegrationTests/TagHelperModelBindingTests/Tests.cs
index a63a91d7..c5b599ec 100644
--- a/tests/GovUk.Frontend.AspNetCore.IntegrationTests/TagHelperModelBindingTests/Tests.cs
+++ b/tests/GovUk.Frontend.AspNetCore.IntegrationTests/TagHelperModelBindingTests/Tests.cs
@@ -173,6 +173,50 @@ public async Task DateInputOverriddenItems_RendersCorrectly()
Assert.Equal("OverriddenYearId", await yearInput.GetAttributeAsync("id"));
Assert.Equal("2020", await yearInput.GetAttributeAsync("value"));
}
+
+ [Fact]
+ public async Task Textarea_RendersCorrectly()
+ {
+ var page = await fixture.Browser!.NewPageAsync();
+ await page.GotoAsync($"{ServerFixture.BaseUrl}/ModelBindingTests/Textarea");
+
+ var textarea = page.Locator("textarea").First;
+ Assert.Equal("Text", await textarea.GetAttributeAsync("name"));
+ Assert.Equal("Text", await textarea.GetAttributeAsync("id"));
+ Assert.Equal("Model value", await textarea.InputValueAsync());
+
+ var label = page.Locator("label").First;
+ Assert.Equal("Text", await label.GetAttributeAsync("for"));
+ Assert.Equal("ModelMetadata display name", await label.InnerTextAsync());
+
+ var hint = page.Locator(".govuk-hint").First;
+ Assert.Equal("ModelMetadata description", await hint.InnerTextAsync());
+
+ var errorMessage = page.Locator(".govuk-error-message").First;
+ Assert.Equal("Error: Model error message", await errorMessage.TextContentAsync());
+ }
+
+ [Fact]
+ public async Task TextareaOverridden_RendersCorrectly()
+ {
+ var page = await fixture.Browser!.NewPageAsync();
+ await page.GotoAsync($"{ServerFixture.BaseUrl}/ModelBindingTests/TextareaOverridden");
+
+ var textarea = page.Locator("textarea").First;
+ Assert.Equal("OverriddenName", await textarea.GetAttributeAsync("name"));
+ Assert.Equal("OverriddenId", await textarea.GetAttributeAsync("id"));
+ Assert.Equal("Overridden value", await textarea.InputValueAsync());
+
+ var label = page.Locator("label").First;
+ Assert.Equal("OverriddenId", await label.GetAttributeAsync("for"));
+ Assert.Equal("Overridden label", await label.InnerTextAsync());
+
+ var hint = page.Locator(".govuk-hint").First;
+ Assert.Equal("Overridden hint", await hint.InnerTextAsync());
+
+ var errorMessage = page.Locator(".govuk-error-message").First;
+ Assert.Equal("Error: Overridden error message", await errorMessage.TextContentAsync());
+ }
}
[Route("/[controller]/[action]")]
@@ -226,6 +270,20 @@ public IActionResult DateInputOverriddenItems()
ModelState.AddModelError(nameof(DateInputTestsModel.Date), "Model error message");
return View(new DateInputTestsModel { Date = new DateOnly(2024, 3, 15) });
}
+
+ [HttpGet]
+ public IActionResult Textarea()
+ {
+ ModelState.AddModelError(nameof(TextareaTestsModel.Text), "Model error message");
+ return View(new TextareaTestsModel { Text = "Model value" });
+ }
+
+ [HttpGet]
+ public IActionResult TextareaOverridden()
+ {
+ ModelState.AddModelError(nameof(TextareaTestsModel.Text), "Model error message");
+ return View(new TextareaTestsModel { Text = "Model value" });
+ }
}
public record TextInputTestsModel
@@ -245,3 +303,9 @@ public record DateInputTestsModel
[Display(Name = "ModelMetadata display name", Description = "ModelMetadata description")]
public DateOnly? Date { get; set; }
}
+
+public record TextareaTestsModel
+{
+ [Display(Name = "ModelMetadata display name", Description = "ModelMetadata description")]
+ public string? Text { get; set; }
+}
diff --git a/tests/GovUk.Frontend.AspNetCore.IntegrationTests/TagHelperModelBindingTests/Textarea.cshtml b/tests/GovUk.Frontend.AspNetCore.IntegrationTests/TagHelperModelBindingTests/Textarea.cshtml
new file mode 100644
index 00000000..be31000e
--- /dev/null
+++ b/tests/GovUk.Frontend.AspNetCore.IntegrationTests/TagHelperModelBindingTests/Textarea.cshtml
@@ -0,0 +1,3 @@
+@model GovUk.Frontend.AspNetCore.IntegrationTests.TagHelperModelBindingTests.TextareaTestsModel
+
+
diff --git a/tests/GovUk.Frontend.AspNetCore.IntegrationTests/TagHelperModelBindingTests/TextareaOverridden.cshtml b/tests/GovUk.Frontend.AspNetCore.IntegrationTests/TagHelperModelBindingTests/TextareaOverridden.cshtml
new file mode 100644
index 00000000..b7c3498d
--- /dev/null
+++ b/tests/GovUk.Frontend.AspNetCore.IntegrationTests/TagHelperModelBindingTests/TextareaOverridden.cshtml
@@ -0,0 +1,8 @@
+@model GovUk.Frontend.AspNetCore.IntegrationTests.TagHelperModelBindingTests.TextareaTestsModel
+
+
+ Overridden label
+ Overridden hint
+ Overridden error message
+ Overridden value
+