Repository: cisagov/manage.get.gov

Issue:
Increase character limit of the large textboxes in the request flow
### Issue description

During soft launch testing (for federal orgs in particular), participants ran out of characters in the textbox of the "Purpose of your domain" (/purpose) request page. 

We should increase the size of the text box to allow domain requester to enter all their information. 


### Acceptance criteria

The character count limit of the following textboxes in the domain request flow is increased by 1000 characters, to a new size of 2000 characters:
- [ ] request/about_your_organization/
- [ ] request/purpose/
- [ ] request/anything_else/

### Additional context

[Recent Slack thread for context.](https://cisa-corp.slack.com/archives/C05TS76RVS6/p1709590668750689)

### Links to other issues

Related to: #1637


Discussion:
Refinement tag removed. Scope has been updated.

Resolving patch:
diff --git a/src/registrar/forms/domain_request_wizard.py b/src/registrar/forms/domain_request_wizard.py
--- a/src/registrar/forms/domain_request_wizard.py
+++ b/src/registrar/forms/domain_request_wizard.py
@@ -319,8 +319,8 @@ class AboutYourOrganizationForm(RegistrarForm):
         widget=forms.Textarea(),
         validators=[
             MaxLengthValidator(
-                1000,
-                message="Response must be less than 1000 characters.",
+                2000,
+                message="Response must be less than 2000 characters.",
             )
         ],
         error_messages={"required": ("Enter more information about your organization.")},
@@ -515,8 +515,8 @@ class PurposeForm(RegistrarForm):
         widget=forms.Textarea(),
         validators=[
             MaxLengthValidator(
-                1000,
-                message="Response must be less than 1000 characters.",
+                2000,
+                message="Response must be less than 2000 characters.",
             )
         ],
         error_messages={"required": "Describe how you’ll use the .gov domain you’re requesting."},
@@ -830,8 +830,8 @@ class AnythingElseForm(RegistrarForm):
         widget=forms.Textarea(),
         validators=[
             MaxLengthValidator(
-                1000,
-                message="Response must be less than 1000 characters.",
+                2000,
+                message="Response must be less than 2000 characters.",
             )
         ],
     )


Test patch:
diff --git a/src/registrar/tests/test_forms.py b/src/registrar/tests/test_forms.py
--- a/src/registrar/tests/test_forms.py
+++ b/src/registrar/tests/test_forms.py
@@ -226,7 +226,7 @@ def test_authorizing_official_email_invalid(self):
         )
 
     def test_purpose_form_character_count_invalid(self):
-        """Response must be less than 1000 characters."""
+        """Response must be less than 2000 characters."""
         form = PurposeForm(
             data={
                 "purpose": "Bacon ipsum dolor amet fatback strip steak pastrami"
@@ -247,15 +247,33 @@ def test_purpose_form_character_count_invalid(self):
                 "cow sausage ball tip kielbasa ham hock. Ball tip cupim meatloaf"
                 "beef ribs rump jowl tenderloin swine sausage biltong"
                 "bacon rump tail boudin meatball boudin meatball boudin."
+                "Bacon ipsum dolor amet fatback strip steak pastrami"
+                "shankle, drumstick doner chicken landjaeger turkey andouille."
+                "Buffalo biltong chuck pork chop tongue bresaola turkey. Doner"
+                "ground round strip steak, jowl tail chuck ribeye bacon"
+                "beef ribs swine filet ball tip pancetta strip steak sirloin"
+                "mignon ham spare ribs rump. Tail shank biltong beef ribs doner"
+                "buffalo swine bacon. Tongue cow picanha brisket bacon chuck"
+                "leberkas pork loin pork, drumstick capicola. Doner short loin"
+                "ground round fatback turducken chislic shoulder turducken"
+                "spare ribs, burgdoggen kielbasa kevin frankfurter ball tip"
+                "pancetta cupim. Turkey meatball andouille porchetta hamburger"
+                "pork chop corned beef. Brisket short ribs turducken, pork chop"
+                "chislic turkey ball pork chop leberkas rump, rump bacon, jowl"
+                "tip ham. Shankle salami tongue venison short ribs kielbasa"
+                "tri-tip ham hock swine hamburger. Flank meatball corned beef"
+                "cow sausage ball tip kielbasa ham hock. Ball tip cupim meatloaf"
+                "beef ribs rump jowl tenderloin swine sausage biltong"
+                "bacon rump tail boudin meatball boudin meatball boudin."
             }
         )
         self.assertEqual(
             form.errors["purpose"],
-            ["Response must be less than 1000 characters."],
+            ["Response must be less than 2000 characters."],
         )
 
     def test_anything_else_form_about_your_organization_character_count_invalid(self):
-        """Response must be less than 1000 characters."""
+        """Response must be less than 2000 characters."""
         form = AnythingElseForm(
             data={
                 "anything_else": "Bacon ipsum dolor amet fatback strip steak pastrami"
@@ -276,15 +294,32 @@ def test_anything_else_form_about_your_organization_character_count_invalid(self
                 "cow sausage ball tip kielbasa ham hock. Ball tip cupim meatloaf"
                 "beef ribs rump jowl tenderloin swine sausage biltong"
                 "bacon rump tail boudin meatball boudin meatball boudin."
+                "shankle, drumstick doner chicken landjaeger turkey andouille."
+                "Buffalo biltong chuck pork chop tongue bresaola turkey. Doner"
+                "ground round strip steak, jowl tail chuck ribeye bacon"
+                "beef ribs swine filet ball tip pancetta strip steak sirloin"
+                "mignon ham spare ribs rump. Tail shank biltong beef ribs doner"
+                "buffalo swine bacon. Tongue cow picanha brisket bacon chuck"
+                "leberkas pork loin pork, drumstick capicola. Doner short loin"
+                "ground round fatback turducken chislic shoulder turducken"
+                "spare ribs, burgdoggen kielbasa kevin frankfurter ball tip"
+                "pancetta cupim. Turkey meatball andouille porchetta hamburger"
+                "pork chop corned beef. Brisket short ribs turducken, pork chop"
+                "chislic turkey ball pork chop leberkas rump, rump bacon, jowl"
+                "tip ham. Shankle salami tongue venison short ribs kielbasa"
+                "tri-tip ham hock swine hamburger. Flank meatball corned beef"
+                "cow sausage ball tip kielbasa ham hock. Ball tip cupim meatloaf"
+                "beef ribs rump jowl tenderloin swine sausage biltong"
+                "bacon rump tail boudin meatball boudin meatball boudin."
             }
         )
         self.assertEqual(
             form.errors["anything_else"],
-            ["Response must be less than 1000 characters."],
+            ["Response must be less than 2000 characters."],
         )
 
     def test_anything_else_form_character_count_invalid(self):
-        """Response must be less than 1000 characters."""
+        """Response must be less than 2000 characters."""
         form = AboutYourOrganizationForm(
             data={
                 "about_your_organization": "Bacon ipsum dolor amet fatback"
@@ -306,11 +341,29 @@ def test_anything_else_form_character_count_invalid(self):
                 "cow sausage ball tip kielbasa ham hock. Ball tip cupim meatloaf"
                 "beef ribs rump jowl tenderloin swine sausage biltong"
                 "bacon rump tail boudin meatball boudin meatball boudin."
+                "strip steak pastrami"
+                "shankle, drumstick doner chicken landjaeger turkey andouille."
+                "Buffalo biltong chuck pork chop tongue bresaola turkey. Doner"
+                "ground round strip steak, jowl tail chuck ribeye bacon"
+                "beef ribs swine filet ball tip pancetta strip steak sirloin"
+                "mignon ham spare ribs rump. Tail shank biltong beef ribs doner"
+                "buffalo swine bacon. Tongue cow picanha brisket bacon chuck"
+                "leberkas pork loin pork, drumstick capicola. Doner short loin"
+                "ground round fatback turducken chislic shoulder turducken"
+                "spare ribs, burgdoggen kielbasa kevin frankfurter ball tip"
+                "pancetta cupim. Turkey meatball andouille porchetta hamburger"
+                "pork chop corned beef. Brisket short ribs turducken, pork chop"
+                "chislic turkey ball pork chop leberkas rump, rump bacon, jowl"
+                "tip ham. Shankle salami tongue venison short ribs kielbasa"
+                "tri-tip ham hock swine hamburger. Flank meatball corned beef"
+                "cow sausage ball tip kielbasa ham hock. Ball tip cupim meatloaf"
+                "beef ribs rump jowl tenderloin swine sausage biltong"
+                "bacon rump tail boudin meatball boudin meatball boudin."
             }
         )
         self.assertEqual(
             form.errors["about_your_organization"],
-            ["Response must be less than 1000 characters."],
+            ["Response must be less than 2000 characters."],
         )
 
     def test_your_contact_email_invalid(self):