diff --git a/e2e-tests/cypress/tests/integration/channels/auth_sso/authentication_1_spec.ts b/e2e-tests/cypress/tests/integration/channels/auth_sso/authentication_1_spec.ts
index 6f4061bb835..1f42c1561a6 100644
--- a/e2e-tests/cypress/tests/integration/channels/auth_sso/authentication_1_spec.ts
+++ b/e2e-tests/cypress/tests/integration/channels/auth_sso/authentication_1_spec.ts
@@ -61,6 +61,8 @@ describe('Authentication', () => {
cy.get('#input_name').clear().type(`test${getRandomId()}`);
+ cy.get('#signup-body-card-form-check-terms-and-privacy').check();
+
cy.findByText('Create account').click();
// * Make sure account was created successfully and we are at the select team page
@@ -113,6 +115,8 @@ describe('Authentication', () => {
cy.get('#input_name').clear().type(`test${getRandomId()}`);
+ cy.get('#signup-body-card-form-check-terms-and-privacy').check();
+
cy.findByText('Create account').click();
// * Make sure account was not created successfully
@@ -146,6 +150,8 @@ describe('Authentication', () => {
cy.get('#input_name').clear().type(username);
+ cy.get('#signup-body-card-form-check-terms-and-privacy').check();
+
cy.findByText('Create account').click();
// * Make sure account was created successfully and we are on the team joining page
diff --git a/e2e-tests/cypress/tests/integration/channels/auth_sso/authentication_2_spec.ts b/e2e-tests/cypress/tests/integration/channels/auth_sso/authentication_2_spec.ts
index 7198829b4f8..2c366bdf523 100644
--- a/e2e-tests/cypress/tests/integration/channels/auth_sso/authentication_2_spec.ts
+++ b/e2e-tests/cypress/tests/integration/channels/auth_sso/authentication_2_spec.ts
@@ -61,6 +61,8 @@ describe('Authentication', () => {
cy.get('#input_password-input').clear().type('less');
+ cy.get('#signup-body-card-form-check-terms-and-privacy').check();
+
cy.findByText('Create account').click();
// * Assert the error is what is expected;
@@ -68,6 +70,8 @@ describe('Authentication', () => {
cy.get('#input_password-input').clear().type('greaterthan7');
+ cy.get('#signup-body-card-form-check-terms-and-privacy').check();
+
cy.findByText('Create account').click();
// * Assert that we are not shown an MFA screen and instead a Teams You Can join page
@@ -112,6 +116,8 @@ describe('Authentication', () => {
cy.get('#input_name').clear().type(`BestUsernameInTheWorld${getRandomId()}`);
+ cy.get('#signup-body-card-form-check-terms-and-privacy').check();
+
['NOLOWERCASE123!', 'noupppercase123!', 'NoNumber!', 'NoSymbol123'].forEach((option) => {
cy.get('#input_password-input').clear().type(option);
cy.findByText('Create account').click();
diff --git a/e2e-tests/cypress/tests/integration/channels/auth_sso/authentication_4_spec.ts b/e2e-tests/cypress/tests/integration/channels/auth_sso/authentication_4_spec.ts
index 004d1895015..64234aecb66 100644
--- a/e2e-tests/cypress/tests/integration/channels/auth_sso/authentication_4_spec.ts
+++ b/e2e-tests/cypress/tests/integration/channels/auth_sso/authentication_4_spec.ts
@@ -149,6 +149,8 @@ describe('Authentication', () => {
cy.get('#input_password-input').type('Test123456!');
+ cy.get('#signup-body-card-form-check-terms-and-privacy').check();
+
['1user', 'te', 'user#1', 'user!1'].forEach((option) => {
cy.get('#input_name').clear().type(option);
cy.findByText('Create account').click();
@@ -183,6 +185,8 @@ describe('Authentication', () => {
cy.get('#input_name').clear().type(`Test${getRandomId()}`);
+ cy.get('#signup-body-card-form-check-terms-and-privacy').check();
+
cy.findByText('Create account').click();
// * Make sure account was created successfully and we are on the team joining page
@@ -245,6 +249,8 @@ describe('Authentication', () => {
cy.get('#input_name').clear().type(`Test${getRandomId()}`);
+ cy.get('#signup-body-card-form-check-terms-and-privacy').check();
+
cy.findByText('Create account').click();
// * Make sure account was not created successfully
diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/auth_sso/authentication_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/auth_sso/authentication_spec.ts
index 22b2701697b..0c4713b7aaa 100644
--- a/e2e-tests/cypress/tests/integration/channels/enterprise/auth_sso/authentication_spec.ts
+++ b/e2e-tests/cypress/tests/integration/channels/enterprise/auth_sso/authentication_spec.ts
@@ -58,6 +58,8 @@ describe('Authentication', () => {
cy.get('#input_name').clear().type(`Test${getRandomId()}`);
+ cy.get('#signup-body-card-form-check-terms-and-privacy').check();
+
cy.findByText('Create account').click();
// * Make sure account was not created successfully
diff --git a/e2e-tests/cypress/tests/integration/channels/onboarding/existing_email_adress_spec.js b/e2e-tests/cypress/tests/integration/channels/onboarding/existing_email_adress_spec.js
index c0c74a79c75..fff60fcc00d 100644
--- a/e2e-tests/cypress/tests/integration/channels/onboarding/existing_email_adress_spec.js
+++ b/e2e-tests/cypress/tests/integration/channels/onboarding/existing_email_adress_spec.js
@@ -31,6 +31,9 @@ function signupWithEmail(name, pw) {
// # Type 'unique1pw' for password
cy.get('#input_password-input').type(pw);
+ // # Check the terms and privacy checkbox
+ cy.get('#signup-body-card-form-check-terms-and-privacy').check();
+
// # Click on Create Account button
cy.findByText('Create account').click();
}
diff --git a/e2e-tests/cypress/tests/integration/channels/onboarding/login_page_link_account_creation_spec.js b/e2e-tests/cypress/tests/integration/channels/onboarding/login_page_link_account_creation_spec.js
index 14f55a8f762..8430167e667 100644
--- a/e2e-tests/cypress/tests/integration/channels/onboarding/login_page_link_account_creation_spec.js
+++ b/e2e-tests/cypress/tests/integration/channels/onboarding/login_page_link_account_creation_spec.js
@@ -71,6 +71,7 @@ describe('Onboarding', () => {
cy.get('#input_email').should('be.focused').and('be.visible').type(email);
cy.get('#input_name').should('be.visible').type(username);
cy.get('#input_password-input').should('be.visible').type(password);
+ cy.get('#signup-body-card-form-check-terms-and-privacy').check();
cy.findByText('Create account').click();
cy.findByText('You’re almost done!').should('be.visible');
diff --git a/e2e-tests/cypress/tests/integration/channels/onboarding/use_team_invite_link_to_sign_up_spec.js b/e2e-tests/cypress/tests/integration/channels/onboarding/use_team_invite_link_to_sign_up_spec.js
index 92eb39043d5..35574b8c482 100644
--- a/e2e-tests/cypress/tests/integration/channels/onboarding/use_team_invite_link_to_sign_up_spec.js
+++ b/e2e-tests/cypress/tests/integration/channels/onboarding/use_team_invite_link_to_sign_up_spec.js
@@ -71,6 +71,9 @@ describe('Onboarding', () => {
cy.get('#input_name').should('be.visible').type(username);
cy.get('#input_password-input').should('be.visible').type(password);
+ // # Check the terms and privacy checkbox
+ cy.get('#signup-body-card-form-check-terms-and-privacy').check();
+
// # Attempt to create an account by clicking on the 'Create account' button
cy.findByText('Create account').click();
diff --git a/e2e-tests/cypress/tests/integration/channels/signin_authentication/signup_spec.js b/e2e-tests/cypress/tests/integration/channels/signin_authentication/signup_spec.js
index 7054d953939..2f8821ea12c 100644
--- a/e2e-tests/cypress/tests/integration/channels/signin_authentication/signup_spec.js
+++ b/e2e-tests/cypress/tests/integration/channels/signin_authentication/signup_spec.js
@@ -72,15 +72,22 @@ describe('Signup Email page', () => {
cy.get('#input_password-input').should('be.visible').and('have.attr', 'placeholder', 'Choose a Password');
cy.findByText('Your password must be 5-72 characters long.').should('be.visible');
- cy.get('#saveSetting').scrollIntoView().should('be.visible');
- cy.get('#saveSetting').should('contain', 'Create account');
+ // * Check terms and privacy checkbox
+ cy.get('#signup-body-card-form-check-terms-and-privacy').should('be.visible').and('not.be.checked');
+ cy.findByText(/I agree to the/i).should('be.visible');
- // * Check newsletter subscription checkbox text and links
- cy.findByText('I would like to receive Mattermost security updates via newsletter.').should('be.visible');
- cy.findByText(/By subscribing, I consent to receive emails from Mattermost with product updates, promotions, and company news\./).should('be.visible');
- cy.findByText(/I have read the/).parent().within(() => {
- cy.findByRole('link', {name: 'Privacy Policy'}).should('be.visible').and('have.attr', 'href').and('include', 'mattermost.com/pl/privacy-policy/');
- cy.findByRole('link', {name: 'unsubscribe'}).should('be.visible').and('have.attr', 'href').and('include', 'forms.mattermost.com/UnsubscribePage.html');
+ // * Check that submit button is disabled without accepting terms
+ cy.get('#saveSetting').scrollIntoView().should('be.visible');
+ cy.get('#saveSetting').should('contain', 'Create account').and('be.disabled');
+
+ // * Check terms and privacy links (now part of checkbox label)
+ cy.get('label[for="signup-body-card-form-check-terms-and-privacy"]').within(() => {
+ cy.findByText('Acceptable Use Policy').should('be.visible').
+ and('have.attr', 'href').
+ and('include', config.SupportSettings.TermsOfServiceLink || TERMS_OF_SERVICE_LINK);
+ cy.findByText('Privacy Policy').should('be.visible').
+ and('have.attr', 'href').
+ and('include', config.SupportSettings.PrivacyPolicyLink || PRIVACY_POLICY_LINK);
});
});
@@ -116,4 +123,23 @@ describe('Signup Email page', () => {
cy.get('.footer-copyright').should('contain', `© ${currentYear} Mattermost Inc.`);
});
});
+
+ it('should enable submit button when terms checkbox is checked', () => {
+ // # Fill in valid form data
+ cy.get('#input_email').type('test@example.com');
+ cy.get('#input_name').type('testuser');
+ cy.get('#input_password-input').type('validPassword123');
+
+ // * Verify submit button is disabled
+ cy.get('#saveSetting').should('be.disabled');
+
+ // # Check the terms and privacy checkbox
+ cy.get('#signup-body-card-form-check-terms-and-privacy').check();
+
+ // * Verify checkbox is now checked
+ cy.get('#signup-body-card-form-check-terms-and-privacy').should('be.checked');
+
+ // * Verify submit button is now enabled
+ cy.get('#saveSetting').should('not.be.disabled');
+ });
});
diff --git a/e2e-tests/cypress/tests/integration/channels/team_settings/closed_team_invite_by_email_spec.js b/e2e-tests/cypress/tests/integration/channels/team_settings/closed_team_invite_by_email_spec.js
index 9512f2bf3c1..6884526358a 100644
--- a/e2e-tests/cypress/tests/integration/channels/team_settings/closed_team_invite_by_email_spec.js
+++ b/e2e-tests/cypress/tests/integration/channels/team_settings/closed_team_invite_by_email_spec.js
@@ -114,6 +114,9 @@ describe('Team Settings', () => {
cy.wait(TIMEOUTS.HALF_SEC);
cy.get('#input_password-input').type(password);
+ // # Check the terms and privacy checkbox
+ cy.get('#signup-body-card-form-check-terms-and-privacy').check();
+
// # Attempt to create an account by clicking on the 'Create Account' button
cy.findByText('Create account').click();
diff --git a/e2e-tests/cypress/tests/integration/channels/team_settings/join_closed_team_with_not_allowed_email_spec.js b/e2e-tests/cypress/tests/integration/channels/team_settings/join_closed_team_with_not_allowed_email_spec.js
index 976ad356bc3..105f741ecd9 100644
--- a/e2e-tests/cypress/tests/integration/channels/team_settings/join_closed_team_with_not_allowed_email_spec.js
+++ b/e2e-tests/cypress/tests/integration/channels/team_settings/join_closed_team_with_not_allowed_email_spec.js
@@ -87,7 +87,10 @@ describe('Team Settings', () => {
cy.get('#input_name').type(username);
cy.get('#input_password-input').type(password);
- // # Attempt to create an account by clicking on the 'Create account' button
+ // # Check the terms and privacy checkbox
+ cy.get('#signup-body-card-form-check-terms-and-privacy').check();
+
+ // # Attempt to create an account by clicking on the 'Create Account' button
cy.findByText('Create account').click();
// * Assert that the expected error message from creating an account with an email not from the allowed email domain exists and is visible
diff --git a/e2e-tests/playwright/lib/src/ui/pages/signup.ts b/e2e-tests/playwright/lib/src/ui/pages/signup.ts
index 240bbcbfe20..f695b7dab44 100644
--- a/e2e-tests/playwright/lib/src/ui/pages/signup.ts
+++ b/e2e-tests/playwright/lib/src/ui/pages/signup.ts
@@ -16,11 +16,9 @@ export default class SignupPage {
readonly usernameInput;
readonly passwordInput;
readonly passwordToggleButton;
- readonly newsLetterCheckBox;
- readonly newsLetterPrivacyPolicyLink;
- readonly newsLetterUnsubscribeLink;
- readonly agreementTermsOfUseLink;
- readonly agreementPrivacyPolicyLink;
+ readonly termsAndPrivacyCheckBox;
+ readonly termsAndPrivacyAcceptableUsePolicyLink;
+ readonly termsAndPrivacyPrivacyPolicyLink;
readonly createAccountButton;
readonly loginLink;
readonly emailError;
@@ -48,14 +46,12 @@ export default class SignupPage {
);
this.passwordError = page.locator('text=Must be 5-72 characters long.');
- const newsletterBlock = page.locator('.check-input');
- this.newsLetterCheckBox = newsletterBlock.getByRole('checkbox', {name: 'newsletter checkbox'});
- this.newsLetterPrivacyPolicyLink = newsletterBlock.locator('text=Privacy Policy');
- this.newsLetterUnsubscribeLink = newsletterBlock.locator('text=unsubscribe');
-
- const agreementBlock = page.locator('.signup-body-card-agreement');
- this.agreementTermsOfUseLink = agreementBlock.locator('text=Terms of Use');
- this.agreementPrivacyPolicyLink = agreementBlock.locator('text=Privacy Policy');
+ const termsAndPrivacyBlock = page.locator('.check-input');
+ this.termsAndPrivacyCheckBox = termsAndPrivacyBlock.getByRole('checkbox', {
+ name: 'Terms and privacy policy checkbox',
+ });
+ this.termsAndPrivacyAcceptableUsePolicyLink = termsAndPrivacyBlock.locator('text=Acceptable Use Policy');
+ this.termsAndPrivacyPrivacyPolicyLink = termsAndPrivacyBlock.locator('text=Privacy Policy');
this.header = new components.MainHeader(page.locator('.hfroute-header'));
this.footer = new components.Footer(page.locator('.hfroute-footer'));
@@ -79,6 +75,7 @@ export default class SignupPage {
await this.emailInput.fill(user.email);
await this.usernameInput.fill(user.username);
await this.passwordInput.fill(user.password);
+ await this.termsAndPrivacyCheckBox.check();
await this.createAccountButton.click();
if (waitForRedirect) {
diff --git a/e2e-tests/playwright/specs/accessibility/common/signup_user_complete.spec.ts b/e2e-tests/playwright/specs/accessibility/common/signup_user_complete.spec.ts
index e0456404b69..714d2a2d272 100644
--- a/e2e-tests/playwright/specs/accessibility/common/signup_user_complete.spec.ts
+++ b/e2e-tests/playwright/specs/accessibility/common/signup_user_complete.spec.ts
@@ -43,25 +43,21 @@ test('/signup_user_complete accessibility tab support', async ({pw}, testInfo) =
await pw.signupPage.passwordInput.press('Tab');
expect(await pw.signupPage.passwordToggleButton).toBeFocused();
- // * Should move focus to newsletter checkbox after tab
+ // * Should move focus to terms and privacy checkbox after tab
await pw.signupPage.passwordToggleButton.press('Tab');
- expect(await pw.signupPage.newsLetterCheckBox).toBeFocused();
+ expect(await pw.signupPage.termsAndPrivacyCheckBox).toBeFocused();
- // * Should move focus to newsletter privacy policy link after tab
- await pw.signupPage.newsLetterCheckBox.press('Tab');
- expect(await pw.signupPage.newsLetterPrivacyPolicyLink).toBeFocused();
+ // * Should move focus to acceptable use policy link after tab
+ await pw.signupPage.termsAndPrivacyCheckBox.press('Tab');
+ expect(await pw.signupPage.termsAndPrivacyAcceptableUsePolicyLink).toBeFocused();
- // * Should move focus to newsletter unsubscribe link after tab
- await pw.signupPage.newsLetterPrivacyPolicyLink.press('Tab');
- expect(await pw.signupPage.newsLetterUnsubscribeLink).toBeFocused();
+ // * Should move focus to privacy policy link after tab
+ await pw.signupPage.termsAndPrivacyAcceptableUsePolicyLink.press('Tab');
+ expect(await pw.signupPage.termsAndPrivacyPrivacyPolicyLink).toBeFocused();
- // * Should move focus to agreement terms of use link after tab
- await pw.signupPage.newsLetterUnsubscribeLink.press('Tab');
- expect(await pw.signupPage.agreementTermsOfUseLink).toBeFocused();
-
- // * Should move focus to agreement privacy policy link after tab
- await pw.signupPage.agreementTermsOfUseLink.press('Tab');
- expect(await pw.signupPage.agreementPrivacyPolicyLink).toBeFocused();
+ // * Should move focus to about link after tab (skips disabled create account button)
+ await pw.signupPage.termsAndPrivacyPrivacyPolicyLink.press('Tab');
+ expect(await pw.signupPage.footer.aboutLink).toBeFocused();
// * Should move focus to privacy policy link after tab
await pw.signupPage.footer.aboutLink.press('Tab');
diff --git a/server/channels/api4/hosted_customer.go b/server/channels/api4/hosted_customer.go
index 90adf3f9cc6..d502cea41ce 100644
--- a/server/channels/api4/hosted_customer.go
+++ b/server/channels/api4/hosted_customer.go
@@ -4,8 +4,6 @@
package api4
import (
- "encoding/json"
- "io"
"net/http"
"github.com/mattermost/mattermost/server/public/model"
@@ -16,40 +14,9 @@ import (
func (api *API) InitHostedCustomer() {
// POST /api/v4/hosted_customer/available
api.BaseRoutes.HostedCustomer.Handle("/signup_available", api.APISessionRequired(handleSignupAvailable)).Methods(http.MethodGet)
- api.BaseRoutes.HostedCustomer.Handle("/subscribe-newsletter", api.APIHandler(handleSubscribeToNewsletter)).Methods(http.MethodPost)
}
func handleSignupAvailable(c *Context, w http.ResponseWriter, r *http.Request) {
const where = "Api4.handleSignupAvailable"
c.Err = model.NewAppError(where, "api.server.hosted_signup_unavailable.error", nil, "", http.StatusNotImplemented)
}
-
-func handleSubscribeToNewsletter(c *Context, w http.ResponseWriter, r *http.Request) {
- const where = "Api4.handleSubscribeToNewsletter"
- ensured := ensureCloudInterface(c, where)
- if !ensured {
- return
- }
-
- bodyBytes, err := io.ReadAll(r.Body)
- if err != nil {
- c.Err = model.NewAppError(where, "api.cloud.app_error", nil, "", http.StatusBadRequest).Wrap(err)
- return
- }
-
- req := new(model.SubscribeNewsletterRequest)
- err = json.Unmarshal(bodyBytes, req)
- if err != nil {
- c.Err = model.NewAppError(where, "api.cloud.request_error", nil, "", http.StatusBadRequest).Wrap(err)
- return
- }
-
- req.ServerID = c.App.Srv().ServerId()
-
- if err := c.App.Cloud().SubscribeToNewsletter("", req); err != nil {
- c.Err = model.NewAppError(where, "api.server.cws.subscribe_to_newsletter.app_error", nil, "CWS Server failed to subscribe to newsletter.", http.StatusInternalServerError).Wrap(err)
- return
- }
-
- ReturnStatusOK(w)
-}
diff --git a/server/einterfaces/cloud.go b/server/einterfaces/cloud.go
index b3eab4d425d..e7b9eb96da0 100644
--- a/server/einterfaces/cloud.go
+++ b/server/einterfaces/cloud.go
@@ -34,8 +34,6 @@ type CloudInterface interface {
CheckCWSConnection(userId string) error
- SubscribeToNewsletter(userID string, req *model.SubscribeNewsletterRequest) error
-
ApplyIPFilters(userID string, ranges *model.AllowedIPRanges) (*model.AllowedIPRanges, error)
GetIPFilters(userID string) (*model.AllowedIPRanges, error)
GetInstallation(userID string) (*model.Installation, error)
diff --git a/server/einterfaces/mocks/CloudInterface.go b/server/einterfaces/mocks/CloudInterface.go
index 01260baec9d..d5ef4fc88df 100644
--- a/server/einterfaces/mocks/CloudInterface.go
+++ b/server/einterfaces/mocks/CloudInterface.go
@@ -503,24 +503,6 @@ func (_m *CloudInterface) RemoveAuditLoggingCert(userID string) error {
return r0
}
-// SubscribeToNewsletter provides a mock function with given fields: userID, req
-func (_m *CloudInterface) SubscribeToNewsletter(userID string, req *model.SubscribeNewsletterRequest) error {
- ret := _m.Called(userID, req)
-
- if len(ret) == 0 {
- panic("no return value specified for SubscribeToNewsletter")
- }
-
- var r0 error
- if rf, ok := ret.Get(0).(func(string, *model.SubscribeNewsletterRequest) error); ok {
- r0 = rf(userID, req)
- } else {
- r0 = ret.Error(0)
- }
-
- return r0
-}
-
// UpdateCloudCustomer provides a mock function with given fields: userID, customerInfo
func (_m *CloudInterface) UpdateCloudCustomer(userID string, customerInfo *model.CloudCustomerInfo) (*model.CloudCustomer, error) {
ret := _m.Called(userID, customerInfo)
diff --git a/server/i18n/en.json b/server/i18n/en.json
index 1607abda20f..496817cb4bc 100644
--- a/server/i18n/en.json
+++ b/server/i18n/en.json
@@ -3158,10 +3158,6 @@
"id": "api.server.cws.needs_enterprise_edition",
"translation": "Service only available in Mattermost Enterprise edition"
},
- {
- "id": "api.server.cws.subscribe_to_newsletter.app_error",
- "translation": "CWS Server failed to subscribe to newsletter."
- },
{
"id": "api.server.hosted_signup_unavailable.error",
"translation": "Portal unavailable for self-hosted signup."
diff --git a/server/public/model/hosted_customer.go b/server/public/model/hosted_customer.go
deleted file mode 100644
index ffaec15cba0..00000000000
--- a/server/public/model/hosted_customer.go
+++ /dev/null
@@ -1,10 +0,0 @@
-// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
-// See LICENSE.txt for license information.
-
-package model
-
-type SubscribeNewsletterRequest struct {
- Email string `json:"email"`
- ServerID string `json:"server_id"`
- SubscribedContent string `json:"subscribed_content"`
-}
diff --git a/server/scripts/vet-api-check.sh b/server/scripts/vet-api-check.sh
index d5e5d6cc310..7dc1ebc30e5 100755
--- a/server/scripts/vet-api-check.sh
+++ b/server/scripts/vet-api-check.sh
@@ -40,7 +40,6 @@ OUTPUT_EXCLUDING_IGNORED=$(echo "$OUTPUT" | grep -Fv \
-e 'Cannot find /api/v4/hosted_customer/confirm-expand method: POST in OpenAPI 3 spec.' \
-e 'Cannot find /api/v4/hosted_customer/invoices method: GET in OpenAPI 3 spec.' \
-e 'Cannot find /api/v4/hosted_customer/invoices/{invoice_id:in_[A-Za-z0-9]+}/pdf method: GET in OpenAPI 3 spec.' \
- -e 'Cannot find /api/v4/hosted_customer/subscribe-newsletter method: POST in OpenAPI 3 spec.' \
-e 'Cannot find /api/v4/license/review method: POST in OpenAPI 3 spec.' \
-e 'Cannot find /api/v4/license/review/status method: GET in OpenAPI 3 spec.' \
-e 'Cannot find /api/v4/posts/{post_id}/edit_history method: GET in OpenAPI 3 spec.' \
diff --git a/webapp/channels/src/components/signup/__snapshots__/signup.test.tsx.snap b/webapp/channels/src/components/signup/__snapshots__/signup.test.tsx.snap
index 4ff9940f9e4..7e854ebf1ba 100644
--- a/webapp/channels/src/components/signup/__snapshots__/signup.test.tsx.snap
+++ b/webapp/channels/src/components/signup/__snapshots__/signup.test.tsx.snap
@@ -118,7 +118,6 @@ exports[`components/signup/Signup should match snapshot for all signup options e
autoFocus={true}
className="signup-body-card-form-email-input"
customMessage={null}
- data-testid="signup-body-card-form-email-input"
disabled={false}
inputSize="large"
name="email"
@@ -136,7 +135,6 @@ exports[`components/signup/Signup should match snapshot for all signup options e
"value": "You can use lowercase letters, numbers, periods, dashes, and underscores.",
}
}
- data-testid="signup-body-card-form-name-input"
disabled={false}
inputSize="large"
name="name"
@@ -148,7 +146,6 @@ exports[`components/signup/Signup should match snapshot for all signup options e
-
-