E2E test - /settings page - Multiple issues available #1168

Description

@John-Paul-Larkin

Context

We need to ensure that our core application features and user flows are fully covered by end-to-end (E2E) tests. We are using Playwright for these tests, and the workflow framework for E2E testing is already in place.

If you navigate to the e2e folder in the root of the project, you'll find that @JohnAllenTech has written numerous tests for the article page. These tests have been grouped into two categories: authenticated and unauthenticated. Please ensure that this pattern is followed when adding new tests.

Expected Behavior

Below is a list of possible tests for the /settings page. These are suggested tests generated with the help of ChatGPT, meant to provide a starting point. You should use your discretion to refine these tests and account for relevant edge cases. Ensure that tests for each input field align with the current Zod validation schema.

Additionally, feel free to propose other valid tests that might apply specifically to the functionality of the settings page.

Tests should be standalone and focus on a single purpose, ensuring each test verifies only one specific behavior or functionality.

Test should be added to e2e/settings.spec.ts

Please leave a comment specifying the tests you plan to write, so others don't duplicate the same efforts.
All PRs are accepted for Hacktoberfest.

Note: For this page, the unauthenticated test is only necessary to verify that the user is correctly redirected to the /get-started page.

Note: As multiple people may contribute to this issue, please ensure you pull the latest changes from the upstream and resolve any conflicts. Sync the upstream

Tests

  1. Profile Picture Upload
    Test: Upload a valid profile picture (JPG, PNG, or GIF).
    Scenario: Simulate selecting an image file, uploading it, and verifying that it is displayed correctly in the UI.
    Edge Case: Test for an invalid file format (e.g., PDF, BMP) and ensure proper error messaging.
  2. Full Name Update
    Test: Update the full name field and save the changes.
    Scenario: Input a new name, click "Save Changes", and verify that the new name is updated and persisted across sessions.
    Edge Case: Test for maximum length or invalid characters, if there are any validation rules.
  3. Username Update
    Test: Update the username field and save the changes.
    Scenario: Input a new username, click "Save Changes", and verify that the username is reflected across the platform.
    Edge Case: Ensure that no two users can have the same username and that errors are displayed for duplicates.
  4. Bio Field Update
    Test: Update the bio field with valid text.
    Scenario: Input a bio within the character limit, save, and verify that it updates correctly.
    Edge Case: Try entering more than 200 characters and verify that an error is displayed or that it prevents submission.
  5. Location Update
    Test: Change the location and save the changes.
    Scenario: Input a new location (e.g., text or emoji), save, and verify the location is updated.
  6. Website URL Update
    Test: Enter a valid website URL.
    Scenario: Add a valid URL, save, and ensure the link displays properly.
    Edge Case: Test for invalid URLs (e.g., no protocol) and verify error handling.
  7. Email Verification
    Test: Verify email change process.
    Scenario: Enter a new email in the "Update Email" field, click "Send Verification Email", and ensure that a verification email is sent.
    Edge Case: Test for invalid email formats and ensure the system rejects them with appropriate error messages.
  8. Notification Preferences
    Test: Toggle notification settings (Allow notifications, Weekly Newsletter).
    Scenario: Toggle these switches, save changes, and verify that the settings persist after reload or login.
    Edge Case: Ensure settings are correctly toggled and do not change without user input.
  9. Form Reset
    Test: Reset the form.
    Scenario: Change several fields, click "Reset", and verify that all fields revert to their original state.
  10. Save Changes
    Test: Save changes to all fields.
    Scenario: Modify multiple fields (profile picture, name, username, etc.), click "Save Changes", and verify that all updates are correctly applied and saved.
  11. Validation & Error Handling
    Test: Input invalid data (e.g., empty required fields, incorrect email format).
    Scenario: Attempt to save with invalid input and verify appropriate validation messages are displayed.
  12. Accessibility
    Test: Verify the page's accessibility (e.g., via keyboard navigation and screen readers).
    Scenario: Ensure that all fields can be navigated with the keyboard and that screen readers can access field labels correctly.

Screenshots

Settings page

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions

      , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
       blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
      }
      } catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
      })();
      (function(){
      try {
      var __m = "github.com";
      var __re = new RegExp('^' + "github\\.com" + '
      
      Skip to content

      E2E test - /settings page - Multiple issues available #1168

      Description

      @John-Paul-Larkin

      Context

      We need to ensure that our core application features and user flows are fully covered by end-to-end (E2E) tests. We are using Playwright for these tests, and the workflow framework for E2E testing is already in place.

      If you navigate to the e2e folder in the root of the project, you'll find that @JohnAllenTech has written numerous tests for the article page. These tests have been grouped into two categories: authenticated and unauthenticated. Please ensure that this pattern is followed when adding new tests.

      Expected Behavior

      Below is a list of possible tests for the /settings page. These are suggested tests generated with the help of ChatGPT, meant to provide a starting point. You should use your discretion to refine these tests and account for relevant edge cases. Ensure that tests for each input field align with the current Zod validation schema.

      Additionally, feel free to propose other valid tests that might apply specifically to the functionality of the settings page.

      Tests should be standalone and focus on a single purpose, ensuring each test verifies only one specific behavior or functionality.

      Test should be added to e2e/settings.spec.ts

      Please leave a comment specifying the tests you plan to write, so others don't duplicate the same efforts.
      All PRs are accepted for Hacktoberfest.

      Note: For this page, the unauthenticated test is only necessary to verify that the user is correctly redirected to the /get-started page.

      Note: As multiple people may contribute to this issue, please ensure you pull the latest changes from the upstream and resolve any conflicts. Sync the upstream

      Tests

      1. Profile Picture Upload
        Test: Upload a valid profile picture (JPG, PNG, or GIF).
        Scenario: Simulate selecting an image file, uploading it, and verifying that it is displayed correctly in the UI.
        Edge Case: Test for an invalid file format (e.g., PDF, BMP) and ensure proper error messaging.
      2. Full Name Update
        Test: Update the full name field and save the changes.
        Scenario: Input a new name, click "Save Changes", and verify that the new name is updated and persisted across sessions.
        Edge Case: Test for maximum length or invalid characters, if there are any validation rules.
      3. Username Update
        Test: Update the username field and save the changes.
        Scenario: Input a new username, click "Save Changes", and verify that the username is reflected across the platform.
        Edge Case: Ensure that no two users can have the same username and that errors are displayed for duplicates.
      4. Bio Field Update
        Test: Update the bio field with valid text.
        Scenario: Input a bio within the character limit, save, and verify that it updates correctly.
        Edge Case: Try entering more than 200 characters and verify that an error is displayed or that it prevents submission.
      5. Location Update
        Test: Change the location and save the changes.
        Scenario: Input a new location (e.g., text or emoji), save, and verify the location is updated.
      6. Website URL Update
        Test: Enter a valid website URL.
        Scenario: Add a valid URL, save, and ensure the link displays properly.
        Edge Case: Test for invalid URLs (e.g., no protocol) and verify error handling.
      7. Email Verification
        Test: Verify email change process.
        Scenario: Enter a new email in the "Update Email" field, click "Send Verification Email", and ensure that a verification email is sent.
        Edge Case: Test for invalid email formats and ensure the system rejects them with appropriate error messages.
      8. Notification Preferences
        Test: Toggle notification settings (Allow notifications, Weekly Newsletter).
        Scenario: Toggle these switches, save changes, and verify that the settings persist after reload or login.
        Edge Case: Ensure settings are correctly toggled and do not change without user input.
      9. Form Reset
        Test: Reset the form.
        Scenario: Change several fields, click "Reset", and verify that all fields revert to their original state.
      10. Save Changes
        Test: Save changes to all fields.
        Scenario: Modify multiple fields (profile picture, name, username, etc.), click "Save Changes", and verify that all updates are correctly applied and saved.
      11. Validation & Error Handling
        Test: Input invalid data (e.g., empty required fields, incorrect email format).
        Scenario: Attempt to save with invalid input and verify appropriate validation messages are displayed.
      12. Accessibility
        Test: Verify the page's accessibility (e.g., via keyboard navigation and screen readers).
        Scenario: Ensure that all fields can be navigated with the keyboard and that screen readers can access field labels correctly.

      Screenshots

      Settings page

      Activity

      Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

      Metadata

      Metadata

      Assignees

      No one assigned

        Type

        No type

        Projects

        No projects

          Milestone

          No milestone

          Relationships

          None yet

          Development

          No branches or pull requests

          Issue actions

          , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
          Skip to content

          E2E test - /settings page - Multiple issues available #1168

          Description

          @John-Paul-Larkin

          Context

          We need to ensure that our core application features and user flows are fully covered by end-to-end (E2E) tests. We are using Playwright for these tests, and the workflow framework for E2E testing is already in place.

          If you navigate to the e2e folder in the root of the project, you'll find that @JohnAllenTech has written numerous tests for the article page. These tests have been grouped into two categories: authenticated and unauthenticated. Please ensure that this pattern is followed when adding new tests.

          Expected Behavior

          Below is a list of possible tests for the /settings page. These are suggested tests generated with the help of ChatGPT, meant to provide a starting point. You should use your discretion to refine these tests and account for relevant edge cases. Ensure that tests for each input field align with the current Zod validation schema.

          Additionally, feel free to propose other valid tests that might apply specifically to the functionality of the settings page.

          Tests should be standalone and focus on a single purpose, ensuring each test verifies only one specific behavior or functionality.

          Test should be added to e2e/settings.spec.ts

          Please leave a comment specifying the tests you plan to write, so others don't duplicate the same efforts.
          All PRs are accepted for Hacktoberfest.

          Note: For this page, the unauthenticated test is only necessary to verify that the user is correctly redirected to the /get-started page.

          Note: As multiple people may contribute to this issue, please ensure you pull the latest changes from the upstream and resolve any conflicts. Sync the upstream

          Tests

          1. Profile Picture Upload
            Test: Upload a valid profile picture (JPG, PNG, or GIF).
            Scenario: Simulate selecting an image file, uploading it, and verifying that it is displayed correctly in the UI.
            Edge Case: Test for an invalid file format (e.g., PDF, BMP) and ensure proper error messaging.
          2. Full Name Update
            Test: Update the full name field and save the changes.
            Scenario: Input a new name, click "Save Changes", and verify that the new name is updated and persisted across sessions.
            Edge Case: Test for maximum length or invalid characters, if there are any validation rules.
          3. Username Update
            Test: Update the username field and save the changes.
            Scenario: Input a new username, click "Save Changes", and verify that the username is reflected across the platform.
            Edge Case: Ensure that no two users can have the same username and that errors are displayed for duplicates.
          4. Bio Field Update
            Test: Update the bio field with valid text.
            Scenario: Input a bio within the character limit, save, and verify that it updates correctly.
            Edge Case: Try entering more than 200 characters and verify that an error is displayed or that it prevents submission.
          5. Location Update
            Test: Change the location and save the changes.
            Scenario: Input a new location (e.g., text or emoji), save, and verify the location is updated.
          6. Website URL Update
            Test: Enter a valid website URL.
            Scenario: Add a valid URL, save, and ensure the link displays properly.
            Edge Case: Test for invalid URLs (e.g., no protocol) and verify error handling.
          7. Email Verification
            Test: Verify email change process.
            Scenario: Enter a new email in the "Update Email" field, click "Send Verification Email", and ensure that a verification email is sent.
            Edge Case: Test for invalid email formats and ensure the system rejects them with appropriate error messages.
          8. Notification Preferences
            Test: Toggle notification settings (Allow notifications, Weekly Newsletter).
            Scenario: Toggle these switches, save changes, and verify that the settings persist after reload or login.
            Edge Case: Ensure settings are correctly toggled and do not change without user input.
          9. Form Reset
            Test: Reset the form.
            Scenario: Change several fields, click "Reset", and verify that all fields revert to their original state.
          10. Save Changes
            Test: Save changes to all fields.
            Scenario: Modify multiple fields (profile picture, name, username, etc.), click "Save Changes", and verify that all updates are correctly applied and saved.
          11. Validation & Error Handling
            Test: Input invalid data (e.g., empty required fields, incorrect email format).
            Scenario: Attempt to save with invalid input and verify appropriate validation messages are displayed.
          12. Accessibility
            Test: Verify the page's accessibility (e.g., via keyboard navigation and screen readers).
            Scenario: Ensure that all fields can be navigated with the keyboard and that screen readers can access field labels correctly.

          Screenshots

          Settings page

          Activity

          Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

          Metadata

          Metadata

          Assignees

          No one assigned

            Type

            No type

            Projects

            No projects

              Milestone

              No milestone

              Relationships

              None yet

              Development

              No branches or pull requests

              Issue actions

              , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
              Skip to content

              E2E test - /settings page - Multiple issues available #1168

              Description

              @John-Paul-Larkin

              Context

              We need to ensure that our core application features and user flows are fully covered by end-to-end (E2E) tests. We are using Playwright for these tests, and the workflow framework for E2E testing is already in place.

              If you navigate to the e2e folder in the root of the project, you'll find that @JohnAllenTech has written numerous tests for the article page. These tests have been grouped into two categories: authenticated and unauthenticated. Please ensure that this pattern is followed when adding new tests.

              Expected Behavior

              Below is a list of possible tests for the /settings page. These are suggested tests generated with the help of ChatGPT, meant to provide a starting point. You should use your discretion to refine these tests and account for relevant edge cases. Ensure that tests for each input field align with the current Zod validation schema.

              Additionally, feel free to propose other valid tests that might apply specifically to the functionality of the settings page.

              Tests should be standalone and focus on a single purpose, ensuring each test verifies only one specific behavior or functionality.

              Test should be added to e2e/settings.spec.ts

              Please leave a comment specifying the tests you plan to write, so others don't duplicate the same efforts.
              All PRs are accepted for Hacktoberfest.

              Note: For this page, the unauthenticated test is only necessary to verify that the user is correctly redirected to the /get-started page.

              Note: As multiple people may contribute to this issue, please ensure you pull the latest changes from the upstream and resolve any conflicts. Sync the upstream

              Tests

              1. Profile Picture Upload
                Test: Upload a valid profile picture (JPG, PNG, or GIF).
                Scenario: Simulate selecting an image file, uploading it, and verifying that it is displayed correctly in the UI.
                Edge Case: Test for an invalid file format (e.g., PDF, BMP) and ensure proper error messaging.
              2. Full Name Update
                Test: Update the full name field and save the changes.
                Scenario: Input a new name, click "Save Changes", and verify that the new name is updated and persisted across sessions.
                Edge Case: Test for maximum length or invalid characters, if there are any validation rules.
              3. Username Update
                Test: Update the username field and save the changes.
                Scenario: Input a new username, click "Save Changes", and verify that the username is reflected across the platform.
                Edge Case: Ensure that no two users can have the same username and that errors are displayed for duplicates.
              4. Bio Field Update
                Test: Update the bio field with valid text.
                Scenario: Input a bio within the character limit, save, and verify that it updates correctly.
                Edge Case: Try entering more than 200 characters and verify that an error is displayed or that it prevents submission.
              5. Location Update
                Test: Change the location and save the changes.
                Scenario: Input a new location (e.g., text or emoji), save, and verify the location is updated.
              6. Website URL Update
                Test: Enter a valid website URL.
                Scenario: Add a valid URL, save, and ensure the link displays properly.
                Edge Case: Test for invalid URLs (e.g., no protocol) and verify error handling.
              7. Email Verification
                Test: Verify email change process.
                Scenario: Enter a new email in the "Update Email" field, click "Send Verification Email", and ensure that a verification email is sent.
                Edge Case: Test for invalid email formats and ensure the system rejects them with appropriate error messages.
              8. Notification Preferences
                Test: Toggle notification settings (Allow notifications, Weekly Newsletter).
                Scenario: Toggle these switches, save changes, and verify that the settings persist after reload or login.
                Edge Case: Ensure settings are correctly toggled and do not change without user input.
              9. Form Reset
                Test: Reset the form.
                Scenario: Change several fields, click "Reset", and verify that all fields revert to their original state.
              10. Save Changes
                Test: Save changes to all fields.
                Scenario: Modify multiple fields (profile picture, name, username, etc.), click "Save Changes", and verify that all updates are correctly applied and saved.
              11. Validation & Error Handling
                Test: Input invalid data (e.g., empty required fields, incorrect email format).
                Scenario: Attempt to save with invalid input and verify appropriate validation messages are displayed.
              12. Accessibility
                Test: Verify the page's accessibility (e.g., via keyboard navigation and screen readers).
                Scenario: Ensure that all fields can be navigated with the keyboard and that screen readers can access field labels correctly.

              Screenshots

              Settings page

              Activity

              Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

              Metadata

              Metadata

              Assignees

              No one assigned

                Type

                No type

                Projects

                No projects

                  Milestone

                  No milestone

                  Relationships

                  None yet

                  Development

                  No branches or pull requests

                  Issue actions

                  , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
                  Skip to content

                  E2E test - /settings page - Multiple issues available #1168

                  Description

                  @John-Paul-Larkin

                  Context

                  We need to ensure that our core application features and user flows are fully covered by end-to-end (E2E) tests. We are using Playwright for these tests, and the workflow framework for E2E testing is already in place.

                  If you navigate to the e2e folder in the root of the project, you'll find that @JohnAllenTech has written numerous tests for the article page. These tests have been grouped into two categories: authenticated and unauthenticated. Please ensure that this pattern is followed when adding new tests.

                  Expected Behavior

                  Below is a list of possible tests for the /settings page. These are suggested tests generated with the help of ChatGPT, meant to provide a starting point. You should use your discretion to refine these tests and account for relevant edge cases. Ensure that tests for each input field align with the current Zod validation schema.

                  Additionally, feel free to propose other valid tests that might apply specifically to the functionality of the settings page.

                  Tests should be standalone and focus on a single purpose, ensuring each test verifies only one specific behavior or functionality.

                  Test should be added to e2e/settings.spec.ts

                  Please leave a comment specifying the tests you plan to write, so others don't duplicate the same efforts.
                  All PRs are accepted for Hacktoberfest.

                  Note: For this page, the unauthenticated test is only necessary to verify that the user is correctly redirected to the /get-started page.

                  Note: As multiple people may contribute to this issue, please ensure you pull the latest changes from the upstream and resolve any conflicts. Sync the upstream

                  Tests

                  1. Profile Picture Upload
                    Test: Upload a valid profile picture (JPG, PNG, or GIF).
                    Scenario: Simulate selecting an image file, uploading it, and verifying that it is displayed correctly in the UI.
                    Edge Case: Test for an invalid file format (e.g., PDF, BMP) and ensure proper error messaging.
                  2. Full Name Update
                    Test: Update the full name field and save the changes.
                    Scenario: Input a new name, click "Save Changes", and verify that the new name is updated and persisted across sessions.
                    Edge Case: Test for maximum length or invalid characters, if there are any validation rules.
                  3. Username Update
                    Test: Update the username field and save the changes.
                    Scenario: Input a new username, click "Save Changes", and verify that the username is reflected across the platform.
                    Edge Case: Ensure that no two users can have the same username and that errors are displayed for duplicates.
                  4. Bio Field Update
                    Test: Update the bio field with valid text.
                    Scenario: Input a bio within the character limit, save, and verify that it updates correctly.
                    Edge Case: Try entering more than 200 characters and verify that an error is displayed or that it prevents submission.
                  5. Location Update
                    Test: Change the location and save the changes.
                    Scenario: Input a new location (e.g., text or emoji), save, and verify the location is updated.
                  6. Website URL Update
                    Test: Enter a valid website URL.
                    Scenario: Add a valid URL, save, and ensure the link displays properly.
                    Edge Case: Test for invalid URLs (e.g., no protocol) and verify error handling.
                  7. Email Verification
                    Test: Verify email change process.
                    Scenario: Enter a new email in the "Update Email" field, click "Send Verification Email", and ensure that a verification email is sent.
                    Edge Case: Test for invalid email formats and ensure the system rejects them with appropriate error messages.
                  8. Notification Preferences
                    Test: Toggle notification settings (Allow notifications, Weekly Newsletter).
                    Scenario: Toggle these switches, save changes, and verify that the settings persist after reload or login.
                    Edge Case: Ensure settings are correctly toggled and do not change without user input.
                  9. Form Reset
                    Test: Reset the form.
                    Scenario: Change several fields, click "Reset", and verify that all fields revert to their original state.
                  10. Save Changes
                    Test: Save changes to all fields.
                    Scenario: Modify multiple fields (profile picture, name, username, etc.), click "Save Changes", and verify that all updates are correctly applied and saved.
                  11. Validation & Error Handling
                    Test: Input invalid data (e.g., empty required fields, incorrect email format).
                    Scenario: Attempt to save with invalid input and verify appropriate validation messages are displayed.
                  12. Accessibility
                    Test: Verify the page's accessibility (e.g., via keyboard navigation and screen readers).
                    Scenario: Ensure that all fields can be navigated with the keyboard and that screen readers can access field labels correctly.

                  Screenshots

                  Settings page

                  Activity

                  Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

                  Metadata

                  Metadata

                  Assignees

                  No one assigned

                    Type

                    No type

                    Projects

                    No projects

                      Milestone

                      No milestone

                      Relationships

                      None yet

                      Development

                      No branches or pull requests

                      Issue actions

                      , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
                      Skip to content

                      E2E test - /settings page - Multiple issues available #1168

                      Description

                      @John-Paul-Larkin

                      Context

                      We need to ensure that our core application features and user flows are fully covered by end-to-end (E2E) tests. We are using Playwright for these tests, and the workflow framework for E2E testing is already in place.

                      If you navigate to the e2e folder in the root of the project, you'll find that @JohnAllenTech has written numerous tests for the article page. These tests have been grouped into two categories: authenticated and unauthenticated. Please ensure that this pattern is followed when adding new tests.

                      Expected Behavior

                      Below is a list of possible tests for the /settings page. These are suggested tests generated with the help of ChatGPT, meant to provide a starting point. You should use your discretion to refine these tests and account for relevant edge cases. Ensure that tests for each input field align with the current Zod validation schema.

                      Additionally, feel free to propose other valid tests that might apply specifically to the functionality of the settings page.

                      Tests should be standalone and focus on a single purpose, ensuring each test verifies only one specific behavior or functionality.

                      Test should be added to e2e/settings.spec.ts

                      Please leave a comment specifying the tests you plan to write, so others don't duplicate the same efforts.
                      All PRs are accepted for Hacktoberfest.

                      Note: For this page, the unauthenticated test is only necessary to verify that the user is correctly redirected to the /get-started page.

                      Note: As multiple people may contribute to this issue, please ensure you pull the latest changes from the upstream and resolve any conflicts. Sync the upstream

                      Tests

                      1. Profile Picture Upload
                        Test: Upload a valid profile picture (JPG, PNG, or GIF).
                        Scenario: Simulate selecting an image file, uploading it, and verifying that it is displayed correctly in the UI.
                        Edge Case: Test for an invalid file format (e.g., PDF, BMP) and ensure proper error messaging.
                      2. Full Name Update
                        Test: Update the full name field and save the changes.
                        Scenario: Input a new name, click "Save Changes", and verify that the new name is updated and persisted across sessions.
                        Edge Case: Test for maximum length or invalid characters, if there are any validation rules.
                      3. Username Update
                        Test: Update the username field and save the changes.
                        Scenario: Input a new username, click "Save Changes", and verify that the username is reflected across the platform.
                        Edge Case: Ensure that no two users can have the same username and that errors are displayed for duplicates.
                      4. Bio Field Update
                        Test: Update the bio field with valid text.
                        Scenario: Input a bio within the character limit, save, and verify that it updates correctly.
                        Edge Case: Try entering more than 200 characters and verify that an error is displayed or that it prevents submission.
                      5. Location Update
                        Test: Change the location and save the changes.
                        Scenario: Input a new location (e.g., text or emoji), save, and verify the location is updated.
                      6. Website URL Update
                        Test: Enter a valid website URL.
                        Scenario: Add a valid URL, save, and ensure the link displays properly.
                        Edge Case: Test for invalid URLs (e.g., no protocol) and verify error handling.
                      7. Email Verification
                        Test: Verify email change process.
                        Scenario: Enter a new email in the "Update Email" field, click "Send Verification Email", and ensure that a verification email is sent.
                        Edge Case: Test for invalid email formats and ensure the system rejects them with appropriate error messages.
                      8. Notification Preferences
                        Test: Toggle notification settings (Allow notifications, Weekly Newsletter).
                        Scenario: Toggle these switches, save changes, and verify that the settings persist after reload or login.
                        Edge Case: Ensure settings are correctly toggled and do not change without user input.
                      9. Form Reset
                        Test: Reset the form.
                        Scenario: Change several fields, click "Reset", and verify that all fields revert to their original state.
                      10. Save Changes
                        Test: Save changes to all fields.
                        Scenario: Modify multiple fields (profile picture, name, username, etc.), click "Save Changes", and verify that all updates are correctly applied and saved.
                      11. Validation & Error Handling
                        Test: Input invalid data (e.g., empty required fields, incorrect email format).
                        Scenario: Attempt to save with invalid input and verify appropriate validation messages are displayed.
                      12. Accessibility
                        Test: Verify the page's accessibility (e.g., via keyboard navigation and screen readers).
                        Scenario: Ensure that all fields can be navigated with the keyboard and that screen readers can access field labels correctly.

                      Screenshots

                      Settings page

                      Activity

                      Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

                      Metadata

                      Metadata

                      Assignees

                      No one assigned

                        Type

                        No type

                        Projects

                        No projects

                          Milestone

                          No milestone

                          Relationships

                          None yet

                          Development

                          No branches or pull requests

                          Issue actions

                          , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
                          Skip to content

                          E2E test - /settings page - Multiple issues available #1168

                          Description

                          @John-Paul-Larkin

                          Context

                          We need to ensure that our core application features and user flows are fully covered by end-to-end (E2E) tests. We are using Playwright for these tests, and the workflow framework for E2E testing is already in place.

                          If you navigate to the e2e folder in the root of the project, you'll find that @JohnAllenTech has written numerous tests for the article page. These tests have been grouped into two categories: authenticated and unauthenticated. Please ensure that this pattern is followed when adding new tests.

                          Expected Behavior

                          Below is a list of possible tests for the /settings page. These are suggested tests generated with the help of ChatGPT, meant to provide a starting point. You should use your discretion to refine these tests and account for relevant edge cases. Ensure that tests for each input field align with the current Zod validation schema.

                          Additionally, feel free to propose other valid tests that might apply specifically to the functionality of the settings page.

                          Tests should be standalone and focus on a single purpose, ensuring each test verifies only one specific behavior or functionality.

                          Test should be added to e2e/settings.spec.ts

                          Please leave a comment specifying the tests you plan to write, so others don't duplicate the same efforts.
                          All PRs are accepted for Hacktoberfest.

                          Note: For this page, the unauthenticated test is only necessary to verify that the user is correctly redirected to the /get-started page.

                          Note: As multiple people may contribute to this issue, please ensure you pull the latest changes from the upstream and resolve any conflicts. Sync the upstream

                          Tests

                          1. Profile Picture Upload
                            Test: Upload a valid profile picture (JPG, PNG, or GIF).
                            Scenario: Simulate selecting an image file, uploading it, and verifying that it is displayed correctly in the UI.
                            Edge Case: Test for an invalid file format (e.g., PDF, BMP) and ensure proper error messaging.
                          2. Full Name Update
                            Test: Update the full name field and save the changes.
                            Scenario: Input a new name, click "Save Changes", and verify that the new name is updated and persisted across sessions.
                            Edge Case: Test for maximum length or invalid characters, if there are any validation rules.
                          3. Username Update
                            Test: Update the username field and save the changes.
                            Scenario: Input a new username, click "Save Changes", and verify that the username is reflected across the platform.
                            Edge Case: Ensure that no two users can have the same username and that errors are displayed for duplicates.
                          4. Bio Field Update
                            Test: Update the bio field with valid text.
                            Scenario: Input a bio within the character limit, save, and verify that it updates correctly.
                            Edge Case: Try entering more than 200 characters and verify that an error is displayed or that it prevents submission.
                          5. Location Update
                            Test: Change the location and save the changes.
                            Scenario: Input a new location (e.g., text or emoji), save, and verify the location is updated.
                          6. Website URL Update
                            Test: Enter a valid website URL.
                            Scenario: Add a valid URL, save, and ensure the link displays properly.
                            Edge Case: Test for invalid URLs (e.g., no protocol) and verify error handling.
                          7. Email Verification
                            Test: Verify email change process.
                            Scenario: Enter a new email in the "Update Email" field, click "Send Verification Email", and ensure that a verification email is sent.
                            Edge Case: Test for invalid email formats and ensure the system rejects them with appropriate error messages.
                          8. Notification Preferences
                            Test: Toggle notification settings (Allow notifications, Weekly Newsletter).
                            Scenario: Toggle these switches, save changes, and verify that the settings persist after reload or login.
                            Edge Case: Ensure settings are correctly toggled and do not change without user input.
                          9. Form Reset
                            Test: Reset the form.
                            Scenario: Change several fields, click "Reset", and verify that all fields revert to their original state.
                          10. Save Changes
                            Test: Save changes to all fields.
                            Scenario: Modify multiple fields (profile picture, name, username, etc.), click "Save Changes", and verify that all updates are correctly applied and saved.
                          11. Validation & Error Handling
                            Test: Input invalid data (e.g., empty required fields, incorrect email format).
                            Scenario: Attempt to save with invalid input and verify appropriate validation messages are displayed.
                          12. Accessibility
                            Test: Verify the page's accessibility (e.g., via keyboard navigation and screen readers).
                            Scenario: Ensure that all fields can be navigated with the keyboard and that screen readers can access field labels correctly.

                          Screenshots

                          Settings page

                          Activity

                          Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

                          Metadata

                          Metadata

                          Assignees

                          No one assigned

                            Type

                            No type

                            Projects

                            No projects

                              Milestone

                              No milestone

                              Relationships

                              None yet

                              Development

                              No branches or pull requests

                              Issue actions

                              , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
                              Skip to content

                              E2E test - /settings page - Multiple issues available #1168

                              Description

                              @John-Paul-Larkin

                              Context

                              We need to ensure that our core application features and user flows are fully covered by end-to-end (E2E) tests. We are using Playwright for these tests, and the workflow framework for E2E testing is already in place.

                              If you navigate to the e2e folder in the root of the project, you'll find that @JohnAllenTech has written numerous tests for the article page. These tests have been grouped into two categories: authenticated and unauthenticated. Please ensure that this pattern is followed when adding new tests.

                              Expected Behavior

                              Below is a list of possible tests for the /settings page. These are suggested tests generated with the help of ChatGPT, meant to provide a starting point. You should use your discretion to refine these tests and account for relevant edge cases. Ensure that tests for each input field align with the current Zod validation schema.

                              Additionally, feel free to propose other valid tests that might apply specifically to the functionality of the settings page.

                              Tests should be standalone and focus on a single purpose, ensuring each test verifies only one specific behavior or functionality.

                              Test should be added to e2e/settings.spec.ts

                              Please leave a comment specifying the tests you plan to write, so others don't duplicate the same efforts.
                              All PRs are accepted for Hacktoberfest.

                              Note: For this page, the unauthenticated test is only necessary to verify that the user is correctly redirected to the /get-started page.

                              Note: As multiple people may contribute to this issue, please ensure you pull the latest changes from the upstream and resolve any conflicts. Sync the upstream

                              Tests

                              1. Profile Picture Upload
                                Test: Upload a valid profile picture (JPG, PNG, or GIF).
                                Scenario: Simulate selecting an image file, uploading it, and verifying that it is displayed correctly in the UI.
                                Edge Case: Test for an invalid file format (e.g., PDF, BMP) and ensure proper error messaging.
                              2. Full Name Update
                                Test: Update the full name field and save the changes.
                                Scenario: Input a new name, click "Save Changes", and verify that the new name is updated and persisted across sessions.
                                Edge Case: Test for maximum length or invalid characters, if there are any validation rules.
                              3. Username Update
                                Test: Update the username field and save the changes.
                                Scenario: Input a new username, click "Save Changes", and verify that the username is reflected across the platform.
                                Edge Case: Ensure that no two users can have the same username and that errors are displayed for duplicates.
                              4. Bio Field Update
                                Test: Update the bio field with valid text.
                                Scenario: Input a bio within the character limit, save, and verify that it updates correctly.
                                Edge Case: Try entering more than 200 characters and verify that an error is displayed or that it prevents submission.
                              5. Location Update
                                Test: Change the location and save the changes.
                                Scenario: Input a new location (e.g., text or emoji), save, and verify the location is updated.
                              6. Website URL Update
                                Test: Enter a valid website URL.
                                Scenario: Add a valid URL, save, and ensure the link displays properly.
                                Edge Case: Test for invalid URLs (e.g., no protocol) and verify error handling.
                              7. Email Verification
                                Test: Verify email change process.
                                Scenario: Enter a new email in the "Update Email" field, click "Send Verification Email", and ensure that a verification email is sent.
                                Edge Case: Test for invalid email formats and ensure the system rejects them with appropriate error messages.
                              8. Notification Preferences
                                Test: Toggle notification settings (Allow notifications, Weekly Newsletter).
                                Scenario: Toggle these switches, save changes, and verify that the settings persist after reload or login.
                                Edge Case: Ensure settings are correctly toggled and do not change without user input.
                              9. Form Reset
                                Test: Reset the form.
                                Scenario: Change several fields, click "Reset", and verify that all fields revert to their original state.
                              10. Save Changes
                                Test: Save changes to all fields.
                                Scenario: Modify multiple fields (profile picture, name, username, etc.), click "Save Changes", and verify that all updates are correctly applied and saved.
                              11. Validation & Error Handling
                                Test: Input invalid data (e.g., empty required fields, incorrect email format).
                                Scenario: Attempt to save with invalid input and verify appropriate validation messages are displayed.
                              12. Accessibility
                                Test: Verify the page's accessibility (e.g., via keyboard navigation and screen readers).
                                Scenario: Ensure that all fields can be navigated with the keyboard and that screen readers can access field labels correctly.

                              Screenshots

                              Settings page

                              Activity

                              Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

                              Metadata

                              Metadata

                              Assignees

                              No one assigned

                                Type

                                No type

                                Projects

                                No projects

                                  Milestone

                                  No milestone

                                  Relationships

                                  None yet

                                  Development

                                  No branches or pull requests

                                  Issue actions