Skip to content

Ntrnl 358 update description validation to handle case where it is required for repo request and team request #90

Ntrnl 358 update description validation to handle case where it is required for repo request and team request

Ntrnl 358 update description validation to handle case where it is required for repo request and team request #90

GitHub Actions / Tests annotations (🧪 jest-coverage-report-action) failed Feb 22, 2024 in 0s

Test suite run failed

Failed tests: 11/100. Failed suites: 6/41.

Details

Created failed tests' annotations. To disable them, see documentation.

  ● add-team-member endpoint integration tests › POST tests › Should redirect to home page after POST request

    expect(received).toEqual(expected) // deep equality

    Expected: 302
    Received: 200

      42 |             const res = await request(app).post(config.ADD_TEAM_MEMBER_URL).send(MOCK_POST_ADD_TEAM_MEMBER);
      43 |
    > 44 |             expect(res.status).toEqual(302);
         |                                ^
      45 |             expect(res.text).toContain(MOCK_REDIRECT_MESSAGE);
      46 |             expect(mockedLogger).toHaveBeenCalledTimes(1);
      47 |             expect(mockedAuth).toHaveBeenCalledTimes(1);

      at test/integration/routes/add-team-member.spec.ts:44:32
      at fulfilled (test/integration/routes/add-team-member.spec.ts:28:58)

  ● add-team-member endpoint integration tests › POST tests › Should log the Team Name and Team Member GitHub handle on POST request.

    expect(received).toContain(expected) // indexOf

    Expected substring: "Found. Redirecting to home"
    Received string:    "<!DOCTYPE html>
    <html lang=\"en\" class=\"govuk-template \">
      <head>
        <meta charset=\"utf-8\">
        <title>GOV.UK - The best place to find government services and information</title>
        <meta name=\"viewport\" content=\"width=device-width, initial-scale=1, viewport-fit=cover\">
        <meta name=\"theme-color\" content=\"#0b0c0c\">······
        <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">······
          <link rel=\"shortcut icon\" sizes=\"16x16 32x32 48x48\" href=\"/assets/images/favicon.ico\" type=\"image/x-icon\">
          <link rel=\"mask-icon\" href=\"/assets/images/govuk-mask-icon.svg\" color=\"#0b0c0c\">·
          <link rel=\"apple-touch-icon\" sizes=\"180x180\" href=\"/assets/images/govuk-apple-touch-icon-180x180.png\">
          <link rel=\"apple-touch-icon\" sizes=\"167x167\" href=\"/assets/images/govuk-apple-touch-icon-167x167.png\">
          <link rel=\"apple-touch-icon\" sizes=\"152x152\" href=\"/assets/images/govuk-apple-touch-icon-152x152.png\">
          <link rel=\"apple-touch-icon\" href=\"/assets/images/govuk-apple-touch-icon.png\">············
      <link rel=\"stylesheet\" type=\"text/css\" media=\"all\" href=\"//d6nh3dxv55e16.cloudfront.net/stylesheets/govuk-frontend/v3.11.0/govuk-frontend-3.11.0.min.css\">·
      <link rel=\"SHORTCUT ICON\" href=\"//d6nh3dxv55e16.cloudfront.net/images/favicon.ico\"/>
      <link rel=\"icon\" href=\"//d6nh3dxv55e16.cloudfront.net/images/favicon.ico\" type=\"image/x-icon\"/>·············
      </head>
      <body class=\"govuk-template__body \">
        <script>document.body.className = ((document.body.className) ? document.body.className + ' js-enabled' : 'js-enabled');</script>···········
          <a href=\"#main-content\" class=\"govuk-skip-link\" data-module=\"govuk-skip-link\">Skip to main content</a>················
    <header class=\"govuk-header \" role=\"banner\" data-module=\"govuk-header\">
      <div class=\"govuk-header__container govuk-width-container\">
        <div class=\"govuk-header__logo\">
          <a href=\"https://www.gov.uk\" class=\"govuk-header__link govuk-header__link--homepage\">
            <span class=\"govuk-header__logotype\">
              <!--[if gt IE 8]><!-->
              <svg
                aria-hidden=\"true\"
                focusable=\"false\"
                class=\"govuk-header__logotype-crown\"
                xmlns=\"http://www.w3.org/2000/svg\"
                viewBox=\"0 0 132 97\"
                height=\"30\"
                width=\"36\"
              >
                <path
                  fill=\"currentColor\" fill-rule=\"evenodd\"
                  d=\"M25 30.2c3.5 1.5 7.7-.2 9.1-3.7 1.5-3.6-.2-7.8-3.9-9.2-3.6-1.4-7.6.3-9.1 3.9-1.4 3.5.3 7.5 3.9 9zM9 39.5c3.6 1.5 7.8-.2 9.2-3.7 1.5-3.6-.2-7.8-3.9-9.1-3.6-1.5-7.6.2-9.1 3.8-1.4 3.5.3 7.5 3.8 9zM4.4 57.2c3.5 1.5 7.7-.2 9.1-3.8 1.5-3.6-.2-7.7-3.9-9.1-3.5-1.5-7.6.3-9.1 3.8-1.4 3.5.3 7.6 3.9 9.1zm38.3-21.4c3.5 1.5 7.7-.2 9.1-3.8 1.5-3.6-.2-7.7-3.9-9.1-3.6-1.5-7.6.3-9.1 3.8-1.3 3.6.4 7.7 3.9 9.1zm64.4-5.6c-3.6 1.5-7.8-.2-9.1-3.7-1.5-3.6.2-7.8 3.8-9.2 3.6-1.4 7.7.3 9.2 3.9 1.3 3.5-.4 7.5-3.9 9zm15.9 9.3c-3.6 1.5-7.7-.2-9.1-3.7-1.5-3.6.2-7.8 3.7-9.1 3.6-1.5 7.7.2 9.2 3.8 1.5 3.5-.3 7.5-3.8 9zm4.7 17.7c-3.6 1.5-7.8-.2-9.2-3.8-1.5-3.6.2-7.7 3.9-9.1 3.6-1.5 7.7.3 9.2 3.8 1.3 3.5-.4 7.6-3.9 9.1zM89.3 35.8c-3.6 1.5-7.8-.2-9.2-3.8-1.4-3.6.2-7.7 3.9-9.1 3.6-1.5 7.7.3 9.2 3.8 1.4 3.6-.3 7.7-3.9 9.1zM69.7 17.7l8.9 4.7V9.3l-8.9 2.8c-.2-.3-.5-.6-.9-.9L72.4 0H59.6l3.5 11.2c-.3.3-.6.5-.9.9l-8.8-2.8v13.1l8.8-4.7c.3.3.6.7.9.9l-5 15.4v.1c-.2.8-.4 1.6-.4 2.4 0 4.1 3.1 7.5 7 8.1h.2c.3 0 .7.1 1 .1.4 0 .7 0 1-.1h.2c4-.6 7.1-4.1 7.1-8.1 0-.8-.1-1.7-.4-2.4V34l-5.1-15.4c.4-.2.7-.6 1-.9zM66 92.8c16.9 0 32.8 1.1 47.1 3.2 4-16.9 8.9-26.7 14-33.5l-9.6-3.4c1 4.9 1.1 7.2 0 10.2-1.5-1.4-3-4.3-4.2-8.7L108.6 76c2.8-2 5-3.2 7.5-3.3-4.4 9.4-10 11.9-13.6 11.2-4.3-.8-6.3-4.6-5.6-7.9 1-4.7 5.7-5.9 8-.5 4.3-8.7-3-11.4-7.6-8.8 7.1-7.2 7.9-13.5 2.1-21.1-8 6.1-8.1 12.3-4.5 20.8-4.7-5.4-12.1-2.5-9.5 6.2 3.4-5.2 7.9-2 7.2 3.1-.6 4.3-6.4 7.8-13.5 7.2-10.3-.9-10.9-8-11.2-13.8 2.5-.5 7.1 1.8 11 7.3L80.2 60c-4.1 4.4-8 5.3-12.3 5.4 1.4-4.4 8-11.6 8-11.6H55.5s6.4 7.2 7.9 11.6c-4.2-.1-8-1-12.3-5.4l1.4 16.4c3.9-5.5 8.5-7.7 10.9-7.3-.3 5.8-.9 12.8-11.1 13.8-7.2.6-12.9-2.9-13.5-7.2-.7-5 3.8-8.3 7.1-3.1 2.7-8.7-4.6-11.6-9.4-6.2 3.7-8.5 3.6-14.7-4.6-20.8-5.8 7.6-5 13.9 2.2 21.1-4.7-2.6-11.9.1-7.7 8.8 2.3-5.5 7.1-4.2 8.1.5.7 3.3-1.3 7.1-5.7 7.9-3.5.7-9-1.8-13.5-11.2 2.5.1 4.7 1.3 7.5 3.3l-4.7-15.4c-1.2 4.4-2.7 7.2-4.3 8.7-1.1-3-.9-5.3 0-10.2l-9.5 3.4c5 6.9 9.9 16.7 14 33.5 14.8-2.1 30.8-3.2 47.7-3.2z\"
                ></path>
              </svg>
              <!--<![endif]-->
              <!--[if IE 8]>
              <img src=\"/assets/images/govuk-logotype-crown.png\" class=\"govuk-header__logotype-crown-fallback-image\" width=\"36\" height=\"32\" alt=\"\">
              <![endif]-->
              <span class=\"govuk-header__logotype-text\">
                GOV.UK
              </span>
            </span>·········
          </a>
        </div>·····
        <div class=\"govuk-header__content\">··········
          <a href=\"http://localhost:3000/confirmation\" class=\"govuk-header__link govuk-header__service-name\">
            GitHub Requests Application·
          </a>···············
        </div>·····
      </div>
    </header>········
          <div class=\"govuk-width-container \">·········
      <a href=\"/home\" class=\"govuk-back-link\">Back</a>··
            <main class=\"govuk-main-wrapper \" id=\"main-content\" role=\"main\">···········
      <div class=\"govuk-grid-row\">
        <div class=\"govuk-grid-column-two-thirds\">
          <h1 class=\"govuk-heading-l\">Add a GitHub member to a team</h1>·
          <p class=\"govuk-body\">
            When a user has access to our GitHub organisations and they wish to be added to a team within the cabinetoffice GitHub organisation.
          </p>········
      <div class=\"govuk-error-summary\" tabindex=\"0\" data-module=\"govuk-error-summary\">···
      <div role=\"alert\">
        <h2 class=\"govuk-error-summary__title\">
          There is a problem
        </h2>
        <div class=\"govuk-error-summary__body\">·······
          <ul class=\"govuk-list govuk-error-summary__list\">·········
              <li>···········
                <a href=\"#github_handle\">Enter the username of the GitHub handle (aka GitHub account)</a>···········
              </li>·········
          </ul>
        </div>
      </div>
    </div>····
          <form method=\"post\" novalidate>···········
    <div class=\"govuk-form-group\">
      <label class=\"govuk-label govuk-label--m\" for=\"team_name\">
        Team name
      </label>·
    <input class=\"govuk-input govuk-input--width-10\" id=\"team_name\" name=\"team_name\" type=\"text\" value=\"team1\">·
    </div>·····················
    <div class=\"govuk-form-group govuk-form-group--error\">
      <label class=\"govuk-label govuk-label--m\" for=\"github_handle\">
        Member GitHub handle
      </label>········
      <p id=\"github_handle-error\" class=\"govuk-error-message\">
        <span class=\"govuk-visually-hidden\">Error:</span> Enter the username of the GitHub handle (aka GitHub account)
      </p>
    <input class=\"govuk-input govuk-input--width-10 govuk-input--error\" id=\"github_handle\" name=\"github_handle\" type=\"text\" aria-describedby=\"github_handle-error\">·
    </div>························
    <button class=\"govuk-button\" data-module=\"govuk-button\">
      Save
    </button>··········
          </form>
        </div>
      </div>·
            </main>
          </div>···········
        <footer class=\"govuk-footer \" role=\"contentinfo\">
      <div class=\"govuk-width-container \">·····
        <div class=\"govuk-footer__meta\">
          <div class=\"govuk-footer__meta-item govuk-footer__meta-item--grow\">·········
              <h2 class=\"govuk-visually-hidden\">Support links</h2>···········
                <ul class=\"govuk-footer__inline-list\">···············
                    <li class=\"govuk-footer__inline-list-item\">
                      <a class=\"govuk-footer__link\" href=\"#\">
                        Policies
                      </a>
                    </li>···············
                    <li class=\"govuk-footer__inline-list-item\">
                      <a class=\"govuk-footer__link\" href=\"#\">
                        Cookies
                      </a>
                    </li>···············
                    <li class=\"govuk-footer__inline-list-item\">
                      <a class=\"govuk-footer__link\" href=\"#\">
                        Contact us
                      </a>
                    </li>···············
                    <li class=\"govuk-footer__inline-list-item\">
                      <a class=\"govuk-footer__link\" href=\"#\">
                        Accessibility
                      </a>
                    </li>···············
                </ul>·······························
            <svg
              aria-hidden=\"true\"
              focusable=\"false\"
              class=\"govuk-footer__licence-logo\"
              xmlns=\"http://www.w3.org/2000/svg\"
              viewBox=\"0 0 483.2 195.7\"
              height=\"17\"
              width=\"41\"
            >
              <path
                fill=\"currentColor\"
                d=\"M421.5 142.8V.1l-50.7 32.3v161.1h112.4v-50.7zm-122.3-9.6A47.12 47.12 0 0 1 221 97.8c0-26 21.1-47.1 47.1-47.1 16.7 0 31.4 8.7 39.7 21.8l42.7-27.2A97.63 97.63 0 0 0 268.1 0c-36.5 0-68.3 20.1-85.1 49.7A98 98 0 0 0 97.8 0C43.9 0 0 43.9 0 97.8s43.9 97.8 97.8 97.8c36.5 0 68.3-20.1 85.1-49.7a97.76 97.76 0 0 0 149.6 25.4l19.4 22.2h3v-87.8h-80l24.3 27.5zM97.8 145c-26 0-47.1-21.1-47.1-47.1s21.1-47.1 47.1-47.1 47.2 21 47.2 47S123.8 145 97.8 145\"
              />
            </svg>
            <span class=\"govuk-footer__licence-description\">···········
                All content is available under the
                <a
                  class=\"govuk-footer__link\"
                  href=\"https://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/\"
                  rel=\"license\"
                >Open Government Licence v3.0</a>, except where otherwise stated···········
            </span>
          </div>
          <div class=\"govuk-footer__meta-item\">
            <a
              class=\"govuk-footer__link govuk-footer__copyright-logo\"
              href=\"https://www.nationalarchives.gov.uk/information-management/re-using-public-sector-information/uk-government-licensing-framework/crown-copyright/\"
            >© Crown copyright</a>
          </div>
        </div>
      </div>
    </footer>·········
      <script src=\"//d6nh3dxv55e16.cloudfront.net/javascripts/govuk-frontend/v3.11.0/govuk-frontend-3.11.0.min.js\"></script>
      <script>window.GOVUKFrontend.initAll()</script>·
      </body>
    </html>
    "

      67 |             const mockLog = log.info as jest.Mock;
      68 |
    > 69 |             expect(res.text).toContain(MOCK_REDIRECT_MESSAGE);
         |                              ^
      70 |             expect(mockLog).toBeCalledWith(MOCK_POST_ADD_TEAM_MEMBER_RESPONSE);
      71 |             expect(mockedLogger).toHaveBeenCalledTimes(1);
      72 |             expect(mockedAuth).toHaveBeenCalledTimes(1);

      at test/integration/routes/add-team-member.spec.ts:69:30
      at fulfilled (test/integration/routes/add-team-member.spec.ts:28:58)


  ● Remove-member endpoint integration tests › POST tests › Should redirect to home page after POST request

    expect(received).toEqual(expected) // deep equality

    Expected: 302
    Received: 200

      42 |             const res = await request(app).post(config.REMOVE_MEMBER_URL).send(MOCK_POST_REMOVE_MEMBER);
      43 |
    > 44 |             expect(res.status).toEqual(302);
         |                                ^
      45 |             expect(res.text).toContain(MOCK_REDIRECT_MESSAGE);
      46 |             expect(mockedLogger).toHaveBeenCalledTimes(1);
      47 |             expect(mockedAuth).toHaveBeenCalledTimes(1);

      at test/integration/routes/remove-member.spec.ts:44:32
      at fulfilled (test/integration/routes/remove-member.spec.ts:28:58)

  ● Remove-member endpoint integration tests › POST tests › Should log the GitHub Handle and More Details on POST request.

    expect(jest.fn()).toBeCalledWith(...expected)

    Expected: "Github Handle: example"
    Received: "Validation error on remove-member page"

    Number of calls: 1

      67 |             const mockLog = log.info as jest.Mock;
      68 |
    > 69 |             expect(mockLog).toBeCalledWith(MOCK_POST_REMOVE_MEMBER_RESPONSE);
         |                             ^
      70 |             expect(res.text).toContain(MOCK_REDIRECT_MESSAGE);
      71 |             expect(mockedLogger).toHaveBeenCalledTimes(1);
      72 |             expect(mockedAuth).toHaveBeenCalledTimes(1);

      at test/integration/routes/remove-member.spec.ts:69:29
      at fulfilled (test/integration/routes/remove-member.spec.ts:28:58)


  ● Member-request endpoint integration tests › POST tests › Should redirect to home page after POST request

    expect(received).toEqual(expected) // deep equality

    Expected: 302
    Received: 200

      41 |             const res = await request(app).post(config.MEMBER_REQUST_URL).send(MOCK_POST_MEMBER_REQUEST);
      42 |
    > 43 |             expect(res.status).toEqual(302);
         |                                ^
      44 |             expect(res.text).toContain(MOCK_REDIRECT_MESSAGE);
      45 |             expect(mockedLogger).toHaveBeenCalledTimes(1);
      46 |             expect(mockedAuth).toHaveBeenCalledTimes(1);

      at test/integration/routes/member-request.spec.ts:43:32
      at fulfilled (test/integration/routes/member-request.spec.ts:28:58)

  ● Member-request endpoint integration tests › POST tests › Should log the github handle and on POST request.

    expect(jest.fn()).toBeCalledWith(...expected)

    Expected: "GitHub Handle: example"
    Received: "Validation error on member-request page"

    Number of calls: 1

      65 |             const mockLog = log.info as jest.Mock;
      66 |
    > 67 |             expect(mockLog).toBeCalledWith(MOCK_POST_MEMBER_REQUEST_RESPONSE);
         |                             ^
      68 |             expect(res.text).toContain(MOCK_REDIRECT_MESSAGE);
      69 |             expect(mockedLogger).toHaveBeenCalledTimes(1);
      70 |             expect(mockedAuth).toHaveBeenCalledTimes(1);

      at test/integration/routes/member-request.spec.ts:67:29
      at fulfilled (test/integration/routes/member-request.spec.ts:28:58)


  ● add-repo endpoint integration tests › POST tests › Should redirect to home page after POST request

    expect(received).toEqual(expected) // deep equality

    Expected: 302
    Received: 200

      41 |             const res = await request(app).post(config.ADD_REPO_URL).send(MOCK_POST_ADD_REPO);
      42 |
    > 43 |             expect(res.status).toEqual(302);
         |                                ^
      44 |             expect(res.text).toContain(MOCK_REDIRECT_MESSAGE);
      45 |             expect(mockedLogger).toHaveBeenCalledTimes(1);
      46 |             expect(mockedAuth).toHaveBeenCalledTimes(1);

      at test/integration/routes/add-repo.spec.ts:43:32
      at fulfilled (test/integration/routes/add-repo.spec.ts:28:58)

  ● add-repo endpoint integration tests › POST tests › Should log the Repository Name, Visibility and Description on POST request

    expect(jest.fn()).toBeCalledWith(...expected)

    Expected: "Repository Name: repo1, Visibility: public"
    Received: "Validation error on add-repo page"

    Number of calls: 1

      66 |             const mockLog = log.info as jest.Mock;
      67 |
    > 68 |             expect(mockLog).toBeCalledWith(MOCK_POST_ADD_REPO_RESPONSE);
         |                             ^
      69 |             expect(res.text).toContain(MOCK_REDIRECT_MESSAGE);
      70 |             expect(mockedLogger).toHaveBeenCalledTimes(1);
      71 |             expect(mockedAuth).toHaveBeenCalledTimes(1);

      at test/integration/routes/add-repo.spec.ts:68:29
      at fulfilled (test/integration/routes/add-repo.spec.ts:28:58)


  ● add-team endpoint integration tests › POST tests › Should redirect to home page after POST request

    expect(received).toEqual(expected) // deep equality

    Expected: 302
    Received: 200

      41 |             const res = await request(app).post(config.ADD_TEAM_URL).send(MOCK_POST_ADD_TEAM);
      42 |
    > 43 |             expect(res.status).toEqual(302);
         |                                ^
      44 |             expect(res.text).toContain(MOCK_REDIRECT_MESSAGE);
      45 |             expect(mockedLogger).toHaveBeenCalledTimes(1);
      46 |             expect(mockedAuth).toHaveBeenCalledTimes(1);

      at test/integration/routes/add-team.spec.ts:43:32
      at fulfilled (test/integration/routes/add-team.spec.ts:28:58)

  ● add-team endpoint integration tests › POST tests › Should log the add team details POST request

    expect(jest.fn()).toBeCalledWith(...expected)

    Expected: "Team Name: team1, Team Maintainer GitHub Handle: bob"
    Received: "Validation error on add-team page"

    Number of calls: 1

      66 |             const mockLog = log.info as jest.Mock;
      67 |
    > 68 |             expect(mockLog).toBeCalledWith(MOCK_POST_ADD_TEAM_RESPONSE);
         |                             ^
      69 |             expect(res.text).toContain(MOCK_REDIRECT_MESSAGE);
      70 |             expect(mockedLogger).toHaveBeenCalledTimes(1);
      71 |             expect(mockedAuth).toHaveBeenCalledTimes(1);

      at test/integration/routes/add-team.spec.ts:68:29
      at fulfilled (test/integration/routes/add-team.spec.ts:28:58)


  ● add-team-member controller test suites › add-team-member POST tests › should log Team Name, Team Member GitHub handle on POST request

    expect(jest.fn()).toHaveBeenCalledWith(...expected)

    Expected: "Team Name: team1, Team Member GitHub Handle: joe"
    Received: "Team Name: team1, Team Member GitHub Handle: undefined"

    Number of calls: 1

      54 |             post(req, res);
      55 |
    > 56 |             expect(mockLogInfo).toHaveBeenCalledWith(MOCK_POST_ADD_TEAM_MEMBER_RESPONSE);
         |                                 ^
      57 |
      58 |         });
      59 |     });

      at Object.<anonymous> (test/unit/controller/add-team-member.controller.spec.ts:56:33)

Annotations

Check failure on line 41 in test/integration/routes/add-team-member.spec.ts

See this annotation in the file changed.

@github-actions github-actions / Tests annotations (🧪 jest-coverage-report-action)

add-team-member endpoint integration tests > POST tests > Should redirect to home page after POST request

Error: expect(received).toEqual(expected) // deep equality

Expected: 302
Received: 200
    at /home/runner/work/github-requests-app/github-requests-app/test/integration/routes/add-team-member.spec.ts:44:32
    at Generator.next (<anonymous>)
    at fulfilled (/home/runner/work/github-requests-app/github-requests-app/test/integration/routes/add-team-member.spec.ts:28:58)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)

Check failure on line 64 in test/integration/routes/add-team-member.spec.ts

See this annotation in the file changed.

@github-actions github-actions / Tests annotations (🧪 jest-coverage-report-action)

add-team-member endpoint integration tests > POST tests > Should log the Team Name and Team Member GitHub handle on POST request.

Error: expect(received).toContain(expected) // indexOf

Expected substring: "Found. Redirecting to home"
Received string:    "<!DOCTYPE html>
<html lang=\"en\" class=\"govuk-template \">
  <head>
    <meta charset=\"utf-8\">
    <title>GOV.UK - The best place to find government services and information</title>
    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1, viewport-fit=cover\">
    <meta name=\"theme-color\" content=\"#0b0c0c\">······
    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">······
      <link rel=\"shortcut icon\" sizes=\"16x16 32x32 48x48\" href=\"/assets/images/favicon.ico\" type=\"image/x-icon\">
      <link rel=\"mask-icon\" href=\"/assets/images/govuk-mask-icon.svg\" color=\"#0b0c0c\">·
      <link rel=\"apple-touch-icon\" sizes=\"180x180\" href=\"/assets/images/govuk-apple-touch-icon-180x180.png\">
      <link rel=\"apple-touch-icon\" sizes=\"167x167\" href=\"/assets/images/govuk-apple-touch-icon-167x167.png\">
      <link rel=\"apple-touch-icon\" sizes=\"152x152\" href=\"/assets/images/govuk-apple-touch-icon-152x152.png\">
      <link rel=\"apple-touch-icon\" href=\"/assets/images/govuk-apple-touch-icon.png\">············
  <link rel=\"stylesheet\" type=\"text/css\" media=\"all\" href=\"//d6nh3dxv55e16.cloudfront.net/stylesheets/govuk-frontend/v3.11.0/govuk-frontend-3.11.0.min.css\">·
  <link rel=\"SHORTCUT ICON\" href=\"//d6nh3dxv55e16.cloudfront.net/images/favicon.ico\"/>
  <link rel=\"icon\" href=\"//d6nh3dxv55e16.cloudfront.net/images/favicon.ico\" type=\"image/x-icon\"/>·············
  </head>
  <body class=\"govuk-template__body \">
    <script>document.body.className = ((document.body.className) ? document.body.className + ' js-enabled' : 'js-enabled');</script>···········
      <a href=\"#main-content\" class=\"govuk-skip-link\" data-module=\"govuk-skip-link\">Skip to main content</a>················
<header class=\"govuk-header \" role=\"banner\" data-module=\"govuk-header\">
  <div class=\"govuk-header__container govuk-width-container\">
    <div class=\"govuk-header__logo\">
      <a href=\"https://www.gov.uk\" class=\"govuk-header__link govuk-header__link--homepage\">
        <span class=\"govuk-header__logotype\">
          <!--[if gt IE 8]><!-->
          <svg
            aria-hidden=\"true\"
            focusable=\"false\"
            class=\"govuk-header__logotype-crown\"
            xmlns=\"http://www.w3.org/2000/svg\"
            viewBox=\"0 0 132 97\"
            height=\"30\"
            width=\"36\"
          >
            <path
              fill=\"currentColor\" fill-rule=\"evenodd\"
              d=\"M25 30.2c3.5 1.5 7.7-.2 9.1-3.7 1.5-3.6-.2-7.8-3.9-9.2-3.6-1.4-7.6.3-9.1 3.9-1.4 3.5.3 7.5 3.9 9zM9 39.5c3.6 1.5 7.8-.2 9.2-3.7 1.5-3.6-.2-7.8-3.9-9.1-3.6-1.5-7.6.2-9.1 3.8-1.4 3.5.3 7.5 3.8 9zM4.4 57.2c3.5 1.5 7.7-.2 9.1-3.8 1.5-3.6-.2-7.7-3.9-9.1-3.5-1.5-7.6.3-9.1 3.8-1.4 3.5.3 7.6 3.9 9.1zm38.3-21.4c3.5 1.5 7.7-.2 9.1-3.8 1.5-3.6-.2-7.7-3.9-9.1-3.6-1.5-7.6.3-9.1 3.8-1.3 3.6.4 7.7 3.9 9.1zm64.4-5.6c-3.6 1.5-7.8-.2-9.1-3.7-1.5-3.6.2-7.8 3.8-9.2 3.6-1.4 7.7.3 9.2 3.9 1.3 3.5-.4 7.5-3.9 9zm15.9 9.3c-3.6 1.5-7.7-.2-9.1-3.7-1.5-3.6.2-7.8 3.7-9.1 3.6-1.5 7.7.2 9.2 3.8 1.5 3.5-.3 7.5-3.8 9zm4.7 17.7c-3.6 1.5-7.8-.2-9.2-3.8-1.5-3.6.2-7.7 3.9-9.1 3.6-1.5 7.7.3 9.2 3.8 1.3 3.5-.4 7.6-3.9 9.1zM89.3 35.8c-3.6 1.5-7.8-.2-9.2-3.8-1.4-3.6.2-7.7 3.9-9.1 3.6-1.5 7.7.3 9.2 3.8 1.4 3.6-.3 7.7-3.9 9.1zM69.7 17.7l8.9 4.7V9.3l-8.9 2.8c-.2-.3-.5-.6-.9-.9L72.4 0H59.6l3.5 11.2c-.3.3-.6.5-.9.9l-8.8-2.8v13.1l8.8-4.7c.3.3.6.7.9.9l-5 15.4v.1c-.2.8-.4 1.6-.4 2.4 0 4.1 3.1 7.5 7 8.1h.2c.3 0 .7.1 1 .1.4 0 .7 0 1-.1h.2c4-.6 7.1-4.1 7.1-8.1 0-.8-.1-1.7-.4-2.4V34l-5.1-15.4c.4-.2.7-.6 1-.9zM66 92.8c16.9 0 32.8 1.1 47.1 3.2 4-16.9 8.9-26.7 14-33.5l-9.6-3.4c1 4.9 1.1 7.2 0 10.2-1.5-1.4-3-4.3-4.2-8.7L108.6 76c2.8-2 5-3.2 7.5-3.3-4.4 9.4-10 11.9-13.6 11.2-4.3-.8-6.3-4.6-5.6-7.9 1-4.7 5.7-5.9 8-.5 4.3-8.7-3-11.4-7.6-8.8 7.1-7.2 7.9-13.5 2.1-21.1-8 6.1-8.1 12.3-4.5 20.8-4.7-5.4-12.1-2.5-9.5 6.2 3.4-5.2 7.9-2 7.2 3.1-.6 4.3-6.4 7.8-13.5 7.2-10.3-.9-10.9-8-11.2-13.8 2.5-.5 7.1 1.8 11 7.3L80.2 60c-4.1 4.4-8 5.3-12.3 5.4 1.4-4.4 8-11.6 8-11.6H55.5s6.4 7.2 7.9 11.6c-4.2-.1-8-1-12.3-5.4l1.4 16.4c3.9-5.5 8.5-7.7 10.9-7.3-.3 5.8-.9 12.8-11.1 13.8-7.2.6-12.9-2.9-13.5-7.2-.7-5 3.8-8.3 7.1-3.1 2.7-8.7-4.6-11.6-9.4-6.2 3.7-8.5 3.6-14.7-4.6-20.8-5.8 7.6-5 13.9 2.2 21.1-4.7-2.6-11.9.1-7.7 8.8 2.3-5.5 7.1-4.2 8.1.5.7 3.3-1.3 7.1-5.7 7.9-3.5.7-9-1.8-13.5-11.2 2.5.1 4.7 1.3 7.5 3.3l-4.7-15.4c-1.2 4.4-2.7 7.2-4.3 8.7-1.1-3-.9-5.3 0-10.2l-9.5 3.4c5 6.9 9.9 16.7 14 33.5 14.8-2.1 30.8-3.2 47.7-3.2z\"
            ></path>
          </svg>
          <!--<![endif]-->
          <!--[if IE 8]>
          <img src=\"/assets/images/govuk-logotype-crown.png\" class=\"govuk-header__logotype-crown-fallback-image\" width=\"36\" height=\"32\" alt=\"\">
          <![endif]-->
          <span class=\"govuk-header__logotype-text\">
            GOV.UK
          </span>
        </span>·········
      </a>
    </div>·····
    <div class=\"govuk-header__content\">··········
      <a href=\"http://localhost:3000/confirmation\" class=\"govuk-header__link govuk-header__service-name\">
        GitHub Requests Application·
      </a>···············
    </div>·····
  </div>
</header>········
      <div class=\"govuk-width-container \">·········
  <a href=\"/home\" class=\"govuk-back-link\">Back</a>··
        <main class=\"govuk-main-wrapper \" id=\"main-content\" role=\"main\">···········
  <div class=\"govuk-grid-row\">
    <div class=\"govuk-grid-column-two-thirds\">
      <h1 class=\"govuk-heading-l\">Add a GitHub member to a team</h1>·
      <p class=\"govuk-body\">
        When a user has access to our GitHub organisations and they wish to be added to a team within the cabinetoffice GitHub organisation.
      </p>········
  <div class=\"govuk-error-summary\" tabindex=\"0\" data-module=\"govuk-error-summary\">···
  <div role=\"alert\">
    <h2 class=\"govuk-error-summary__title\">
      There is a problem
    </h2>
    <div class=\"govuk-error-summary__body\">·······
      <ul class=\"govuk-list govuk-error-summary__list\">·········
          <li>···········
            <a href=\"#github_handle\">Enter the username of the GitHub handle (aka GitHub account)</a>···········
          </li>·········
      </ul>
    </div>
  </div>
</div>····
      <form method=\"post\" novalidate>···········
<div class=\"govuk-form-group\">
  <label class=\"govuk-label govuk-label--m\" for=\"team_name\">
    Team name
  </label>·
<input class=\"govuk-input govuk-input--width-10\" id=\"team_name\" name=\"team_name\" type=\"text\" value=\"team1\">·
</div>·····················
<div class=\"govuk-form-group govuk-form-group--error\">
  <label class=\"govuk-label govuk-label--m\" for=\"github_handle\">
    Member GitHub handle
  </label>········
  <p id=\"github_handle-error\" class=\"govuk-error-message\">
    <span class=\"govuk-visually-hidden\">Error:</span> Enter the username of the GitHub handle (aka GitHub account)
  </p>
<input class=\"govuk-input govuk-input--width-10 govuk-input--error\" id=\"github_handle\" name=\"github_handle\" type=\"text\" aria-describedby=\"github_handle-error\">·
</div>························
<button class=\"govuk-button\" data-module=\"govuk-button\">
  Save
</button>··········
      </form>
    </div>
  </div>·
        </main>
      </div>···········
    <footer class=\"govuk-footer \" role=\"contentinfo\">
  <div class=\"govuk-width-container \">·····
    <div class=\"govuk-footer__meta\">
      <div class=\"govuk-footer__meta-item govuk-footer__meta-item--grow\">·········
          <h2 class=\"govuk-visually-hidden\">Support links</h2>···········
            <ul class=\"govuk-footer__inline-list\">···············
                <li class=\"govuk-footer__inline-list-item\">
                  <a class=\"govuk-footer__link\" href=\"#\">
                    Policies
                  </a>
                </li>···············
                <li class=\"govuk-footer__inline-list-item\">
                  <a class=\"govuk-footer__link\" href=\"#\">
                    Cookies
                  </a>
                </li>···············
                <li class=\"govuk-footer__inline-list-item\">
                  <a class=\"govuk-footer__link\" href=\"#\">
                    Contact us
                  </a>
                </li>···············
                <li class=\"govuk-footer__inline-list-item\">
                  <a class=\"govuk-footer__link\" href=\"#\">
                    Accessibility
                  </a>
                </li>···············
            </ul>·······························
        <svg
          aria-hidden=\"true\"
          focusable=\"false\"
          class=\"govuk-footer__licence-logo\"
          xmlns=\"http://www.w3.org/2000/svg\"
          viewBox=\"0 0 483.2 195.7\"
          height=\"17\"
          width=\"41\"
        >
          <path
            fill=\"currentColor\"
            d=\"M421.5 142.8V.1l-50.7 32.3v161.1h112.4v-50.7zm-122.3-9.6A47.12 47.12 0 0 1 221 97.8c0-26 21.1-47.1 47.1-47.1 16.7 0 31.4 8.7 39.7 21.8l42.7-27.2A97.63 97.63 0 0 0 268.1 0c-36.5 0-68.3 20.1-85.1 49.7A98 98 0 0 0 97.8 0C43.9 0 0 43.9 0 97.8s43.9 97.8 97.8 97.8c36.5 0 68.3-20.1 85.1-49.7a97.76 97.76 0 0 0 149.6 25.4l19.4 22.2h3v-87.8h-80l24.3 27.5zM97.8 145c-26 0-47.1-21.1-47.1-47.1s21.1-47.1 47.1-47.1 47.2 21 47.2 47S123.8 145 97.8 145\"
          />
        </svg>
        <span class=\"govuk-footer__licence-description\">···········
            All content is available under the
            <a
              class=\"govuk-footer__link\"
              href=\"https://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/\"
              rel=\"license\"
            >Open Government Licence v3.0</a>, except where otherwise stated···········
        </span>
      </div>
      <div class=\"govuk-footer__meta-item\">
        <a
          class=\"govuk-footer__link govuk-footer__copyright-logo\"
          href=\"https://www.nationalarchives.gov.uk/information-management/re-using-public-sector-information/uk-government-licensing-framework/crown-copyright/\"
        >© Crown copyright</a>
      </div>
    </div>
  </div>
</footer>·········
  <script src=\"//d6nh3dxv55e16.cloudfront.net/javascripts/govuk-frontend/v3.11.0/govuk-frontend-3.11.0.min.js\"></script>
  <script>window.GOVUKFrontend.initAll()</script>·
  </body>
</html>
"
    at /home/runner/work/github-requests-app/github-requests-app/test/integration/routes/add-team-member.spec.ts:69:30
    at Generator.next (<anonymous>)
    at fulfilled (/home/runner/work/github-requests-app/github-requests-app/test/integration/routes/add-team-member.spec.ts:28:58)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)

Check failure on line 41 in test/integration/routes/remove-member.spec.ts

See this annotation in the file changed.

@github-actions github-actions / Tests annotations (🧪 jest-coverage-report-action)

Remove-member endpoint integration tests > POST tests > Should redirect to home page after POST request

Error: expect(received).toEqual(expected) // deep equality

Expected: 302
Received: 200
    at /home/runner/work/github-requests-app/github-requests-app/test/integration/routes/remove-member.spec.ts:44:32
    at Generator.next (<anonymous>)
    at fulfilled (/home/runner/work/github-requests-app/github-requests-app/test/integration/routes/remove-member.spec.ts:28:58)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)

Check failure on line 64 in test/integration/routes/remove-member.spec.ts

See this annotation in the file changed.

@github-actions github-actions / Tests annotations (🧪 jest-coverage-report-action)

Remove-member endpoint integration tests > POST tests > Should log the GitHub Handle and More Details on POST request.

Error: expect(jest.fn()).toBeCalledWith(...expected)

Expected: "Github Handle: example"
Received: "Validation error on remove-member page"

Number of calls: 1
    at /home/runner/work/github-requests-app/github-requests-app/test/integration/routes/remove-member.spec.ts:69:29
    at Generator.next (<anonymous>)
    at fulfilled (/home/runner/work/github-requests-app/github-requests-app/test/integration/routes/remove-member.spec.ts:28:58)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)

Check failure on line 40 in test/integration/routes/member-request.spec.ts

See this annotation in the file changed.

@github-actions github-actions / Tests annotations (🧪 jest-coverage-report-action)

Member-request endpoint integration tests > POST tests > Should redirect to home page after POST request

Error: expect(received).toEqual(expected) // deep equality

Expected: 302
Received: 200
    at /home/runner/work/github-requests-app/github-requests-app/test/integration/routes/member-request.spec.ts:43:32
    at Generator.next (<anonymous>)
    at fulfilled (/home/runner/work/github-requests-app/github-requests-app/test/integration/routes/member-request.spec.ts:28:58)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)

Check failure on line 62 in test/integration/routes/member-request.spec.ts

See this annotation in the file changed.

@github-actions github-actions / Tests annotations (🧪 jest-coverage-report-action)

Member-request endpoint integration tests > POST tests > Should log the github handle and on POST request.

Error: expect(jest.fn()).toBeCalledWith(...expected)

Expected: "GitHub Handle: example"
Received: "Validation error on member-request page"

Number of calls: 1
    at /home/runner/work/github-requests-app/github-requests-app/test/integration/routes/member-request.spec.ts:67:29
    at Generator.next (<anonymous>)
    at fulfilled (/home/runner/work/github-requests-app/github-requests-app/test/integration/routes/member-request.spec.ts:28:58)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)

Check failure on line 40 in test/integration/routes/add-repo.spec.ts

See this annotation in the file changed.

@github-actions github-actions / Tests annotations (🧪 jest-coverage-report-action)

add-repo endpoint integration tests > POST tests > Should redirect to home page after POST request

Error: expect(received).toEqual(expected) // deep equality

Expected: 302
Received: 200
    at /home/runner/work/github-requests-app/github-requests-app/test/integration/routes/add-repo.spec.ts:43:32
    at Generator.next (<anonymous>)
    at fulfilled (/home/runner/work/github-requests-app/github-requests-app/test/integration/routes/add-repo.spec.ts:28:58)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)

Check failure on line 63 in test/integration/routes/add-repo.spec.ts

See this annotation in the file changed.

@github-actions github-actions / Tests annotations (🧪 jest-coverage-report-action)

add-repo endpoint integration tests > POST tests > Should log the Repository Name, Visibility and Description on POST request

Error: expect(jest.fn()).toBeCalledWith(...expected)

Expected: "Repository Name: repo1, Visibility: public"
Received: "Validation error on add-repo page"

Number of calls: 1
    at /home/runner/work/github-requests-app/github-requests-app/test/integration/routes/add-repo.spec.ts:68:29
    at Generator.next (<anonymous>)
    at fulfilled (/home/runner/work/github-requests-app/github-requests-app/test/integration/routes/add-repo.spec.ts:28:58)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)

Check failure on line 40 in test/integration/routes/add-team.spec.ts

See this annotation in the file changed.

@github-actions github-actions / Tests annotations (🧪 jest-coverage-report-action)

add-team endpoint integration tests > POST tests > Should redirect to home page after POST request

Error: expect(received).toEqual(expected) // deep equality

Expected: 302
Received: 200
    at /home/runner/work/github-requests-app/github-requests-app/test/integration/routes/add-team.spec.ts:43:32
    at Generator.next (<anonymous>)
    at fulfilled (/home/runner/work/github-requests-app/github-requests-app/test/integration/routes/add-team.spec.ts:28:58)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)

Check failure on line 63 in test/integration/routes/add-team.spec.ts

See this annotation in the file changed.

@github-actions github-actions / Tests annotations (🧪 jest-coverage-report-action)

add-team endpoint integration tests > POST tests > Should log the add team details POST request

Error: expect(jest.fn()).toBeCalledWith(...expected)

Expected: "Team Name: team1, Team Maintainer GitHub Handle: bob"
Received: "Validation error on add-team page"

Number of calls: 1
    at /home/runner/work/github-requests-app/github-requests-app/test/integration/routes/add-team.spec.ts:68:29
    at Generator.next (<anonymous>)
    at fulfilled (/home/runner/work/github-requests-app/github-requests-app/test/integration/routes/add-team.spec.ts:28:58)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)

Check failure on line 49 in test/unit/controller/add-team-member.controller.spec.ts

See this annotation in the file changed.

@github-actions github-actions / Tests annotations (🧪 jest-coverage-report-action)

add-team-member controller test suites > add-team-member POST tests > should log Team Name, Team Member GitHub handle on POST request

Error: expect(jest.fn()).toHaveBeenCalledWith(...expected)

Expected: "Team Name: team1, Team Member GitHub Handle: joe"
Received: "Team Name: team1, Team Member GitHub Handle: undefined"

Number of calls: 1
    at Object.<anonymous> (/home/runner/work/github-requests-app/github-requests-app/test/unit/controller/add-team-member.controller.spec.ts:56:33)
    at Promise.then.completed (/home/runner/work/github-requests-app/github-requests-app/node_modules/jest-circus/build/utils.js:298:28)
    at new Promise (<anonymous>)
    at callAsyncCircusFn (/home/runner/work/github-requests-app/github-requests-app/node_modules/jest-circus/build/utils.js:231:10)
    at _callCircusTest (/home/runner/work/github-requests-app/github-requests-app/node_modules/jest-circus/build/run.js:316:40)
    at _runTest (/home/runner/work/github-requests-app/github-requests-app/node_modules/jest-circus/build/run.js:252:3)
    at _runTestsForDescribeBlock (/home/runner/work/github-requests-app/github-requests-app/node_modules/jest-circus/build/run.js:126:9)
    at _runTestsForDescribeBlock (/home/runner/work/github-requests-app/github-requests-app/node_modules/jest-circus/build/run.js:121:9)
    at _runTestsForDescribeBlock (/home/runner/work/github-requests-app/github-requests-app/node_modules/jest-circus/build/run.js:121:9)
    at run (/home/runner/work/github-requests-app/github-requests-app/node_modules/jest-circus/build/run.js:71:3)
    at runAndTransformResultsToJestFormat (/home/runner/work/github-requests-app/github-requests-app/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
    at jestAdapter (/home/runner/work/github-requests-app/github-requests-app/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
    at runTestInternal (/home/runner/work/github-requests-app/github-requests-app/node_modules/jest-runner/build/runTest.js:367:16)
    at runTest (/home/runner/work/github-requests-app/github-requests-app/node_modules/jest-runner/build/runTest.js:444:34)