diff --git a/client/i18n/locales/english/translations.json b/client/i18n/locales/english/translations.json
index 0de7cc89d5f..3f3f1f35d50 100644
--- a/client/i18n/locales/english/translations.json
+++ b/client/i18n/locales/english/translations.json
@@ -529,6 +529,8 @@
"unsubscribed": "You have successfully been unsubscribed",
"keep-coding": "Whatever you go on to, keep coding!",
"email-signup": "Email Sign Up",
+ "brand-new-account": "Welcome to your brand new freeCodeCamp account. Let's get started.",
+ "duplicate-account-warning": "If you meant to sign into an existing account instead of creating this account, <0>click here to delete this account0> and try another email address.",
"quincy": "- Quincy Larson, the teacher who founded freeCodeCamp.org",
"email-blast": "By the way, each Friday I send an email with 5 links about programming and computer science. I send these to about 4 million people. Would you like me to send this to you, too?",
"update-email-1": "Update your email address",
diff --git a/client/src/components/Intro/components/intro-description.tsx b/client/src/components/Intro/components/intro-description.tsx
index 5d30be6c6ea..06ac91f8b3b 100644
--- a/client/src/components/Intro/components/intro-description.tsx
+++ b/client/src/components/Intro/components/intro-description.tsx
@@ -11,7 +11,10 @@ function IntroDescription(): JSX.Element {
return (
- {t('learn.read-this.heading')}
+
+
+ {t('learn.read-this.heading')}
+
{t('learn.read-this.p1')}
{t('learn.read-this.p2')}
@@ -33,6 +36,7 @@ function IntroDescription(): JSX.Element {
diff --git a/cypress/e2e/default/user/privacy-terms.ts b/cypress/e2e/default/user/privacy-terms.ts
index 0fec3116ba9..07a553c4976 100644
--- a/cypress/e2e/default/user/privacy-terms.ts
+++ b/cypress/e2e/default/user/privacy-terms.ts
@@ -1,5 +1,6 @@
+// TODO: DRY out the parts before clicking "Yes please" and "No thanks"
describe('Privacy terms', () => {
- it('should not redirect away from email sign up page on login', () => {
+ it('should accept update privacy terms if requests emails from Quincy', () => {
// Flag used to identify if the `/update-privacy-terms` have been called
let privacyTermsUpdated = false;
cy.intercept('PUT', '/update-privacy-terms', () => {
@@ -13,13 +14,13 @@ describe('Privacy terms', () => {
// 2. The /update-privacy-terms has not been requested
cy.visit('/');
cy.get('[data-test-label="landing-small-cta"]').click();
- cy.location('pathname').should('contain', '/email-sign-up');
+ // Since we're using the dev login, we do
cy.wrap(privacyTermsUpdated).should('eq', false);
+ cy.visit('/email-sign-up');
// Assert email sign up elements and make sure we don't get redirected somewhere else
cy.title().should('contain', 'Email Sign Up');
cy.get('[data-cy="email-sign-up"]').should('exist');
- // Navigate away from this page via quincy emails which should unmount the component
- // and request /update-privacy-terms
+ // Accept
cy.get('button:contains("Yes please")').click();
cy.wait('@updatePrivacyTerms').then(() => {
expect(privacyTermsUpdated).to.eq(true);
@@ -27,4 +28,33 @@ describe('Privacy terms', () => {
cy.location('pathname').should('contain', '/learn');
});
});
+
+ it('should accept update privacy terms if the user rejects emails from Quincy', () => {
+ // Flag used to identify if the `/update-privacy-terms` have been called
+ let privacyTermsUpdated = false;
+ cy.intercept('PUT', '/update-privacy-terms', () => {
+ privacyTermsUpdated = true;
+ }).as('updatePrivacyTerms');
+
+ // Seed dev user with `acceptedPrivacyTerms` unset
+ cy.exec('pnpm run seed -- --unset-privacy-terms');
+ // Go to the homepage and log in manually so we can assert the following:
+ // 1. Redirection to /email-sign-up works properly
+ // 2. The /update-privacy-terms has not been requested
+ cy.visit('/');
+ cy.get('[data-test-label="landing-small-cta"]').click();
+ // Since we're using the dev login, we do
+ cy.wrap(privacyTermsUpdated).should('eq', false);
+ cy.visit('/email-sign-up');
+ // Assert email sign up elements and make sure we don't get redirected somewhere else
+ cy.title().should('contain', 'Email Sign Up');
+ cy.get('[data-cy="email-sign-up"]').should('exist');
+ // Accept
+ cy.get('button:contains("No thanks")').click();
+ cy.wait('@updatePrivacyTerms').then(() => {
+ expect(privacyTermsUpdated).to.eq(true);
+ cy.contains('Welcome back');
+ cy.location('pathname').should('contain', '/learn');
+ });
+ });
});