Skip to content

devfile-web E2E testing failures due to GitHub rate limiting #1739

@michael-valdron

Description

@michael-valdron

Which area is this bug related to?

/area registry-viewer
/area landing-page

What versions of software are you using?

Node.js Project

Operating System and version: N/A

Node.js version: 18

Yarn version: 1.22

Project.json:

Bug Summary

Describe the bug:

E2E has valid links cases are failing due to the test suite recieving some 404 429 http errors from github.com URLs, responses appear to indicate that these are a result in change in rate limiting policy on GitHub's side.

To Reproduce:

Run yarn nx affected --target=e2e --configuration=production/development

Expected Behavior

E2E testing should pass if all URLs are accessible (github.com URLs generally are always valid).

Any logs, error output, screenshots etc? Provide the devfile that sees this bug, if applicable

...
-----------------------------------------------------------

The request we sent was:

Method: GET
URL: https://github.com/kubernetes/community/blob/master/contributors/guide/owners.md
Headers: {
  "Connection": "keep-alive",
  "user-agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Cypress/12.6.0 Chrome/106.0.5249.51 Electron/21.0.0 Safari/537.36",
  "accept": "*/*",
  "cookie": "logged_in=no; _octo=GH1.1.92440484.1753116488; _gh_sess=xfmwwljXgbQKtGJu6jxC7BMTTUTpGm4H7jAEAaeu5ry7uk6IBhe9txjCWFkiIlNEq7EfM88idpaZBcgNZfhMUxqmZzRbv07LOID9oaI%2Bz8ppRhdTAjGCrIx4G361fhfKhXtX3cwHhFgLeaFJlNR3eXZCNkBevuNCiXc%2BNg6PlWs%2BSOQ5AjbDtB0xpe1CogLERZcBSs6YFLQzqutBN1f6oszv8HuYuRhTVER%2FQai0hEeSjWskw5Y0qacVaiU21YDgZXIePEk96h3Nkk49SfoR1Q%3D%3D--awfsVHRj0uqjJGdQ--D6A5tJTmSXeF9NI0Y3IswQ%3D%3D",
  "accept-encoding": "gzip, deflate"
}

-----------------------------------------------------------

The response we got was:

Status: 429 - Too Many Requests
Headers: {
  "date": "Mon, 21 Jul 2025 16:48:08 GMT",
  "server": "Varnish",
  "strict-transport-security": "max-age=31536000; includeSubdomains; preload",
  "x-content-type-options": "nosniff",
  "x-frame-options": "deny",
  "x-xss-protection": "1; mode=block",
  "content-security-policy": "default-src 'none'; style-src 'unsafe-inline'",
  "content-type": "text/html; charset=utf-8",
  "content-length": "1474",
  "x-github-request-id": "B000:3B9021:6F839F:73190B:687E6F48"
}
Body: <html>
  <head>
    <meta content="origin" name="referrer">
    <title>Rate limit &middot; GitHub</title>
    <meta name="viewport" content="width=device-width">
    <style type="text/css" media="screen">
      body {
        background-color: #f6f8fa;
        color: rgba(0, 0, 0, 0.5);
        font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;
        font-size: 14px;
        line-height: 1.5;
      }
      .c { margin: 50px auto; max-width: 600px; text-align: center; padding: 0 24px; }
      a { text-decoration: none; }
      a:hover { text-decoration: underline; }
      h1 { color: #24292e; line-height: 60px; font-size: 48px; font-weight: 300; margin: 0px; }
      p { margin: 20px 0 40px; }
      #s { margin-top: 35px; }
      #s a {
        color: #666666;
        font-weight: 200;
        font-size: 14px;
        margin: 0 10px;
      }
    </style>
  </head>
  <body>
    <div class="c">
      <h1>Whoa there!</h1>
      <p>You have triggered an abuse detection mechanism.<br><br>
        Please wait a few minutes before you try again;<br>
        in some cases this may take up to an hour.
      </p>
      <div id="s">
        <a href="https://support.github.com">Contact Support</a> &mdash;
        <a href="https://githubstatus.com">GitHub Status</a> &mdash;
        <a href="https://twitter.com/githubstatus">@githubstatus</a>
      </div>
    </div>
  </body>
</html>

https://on.cypress.io/request
      at <unknown> (http://localhost:4200/__cypress/runner/cypress_runner.js:139725:80)
      at tryCatcher (http://localhost:4200/__cypress/runner/cypress_runner.js:8914:23)
      at Promise._settlePromiseFromHandler (http://localhost:4200/__cypress/runner/cypress_runner.js:6849:31)
      at Promise._settlePromise (http://localhost:4200/__cypress/runner/cypress_runner.js:6906:18)
      at Promise._settlePromise0 (http://localhost:4200/__cypress/runner/cypress_runner.js:6951:10)
      at Promise._settlePromises (http://localhost:4200/__cypress/runner/cypress_runner.js:7031:18)
      at _drainQueueStep (http://localhost:4200/__cypress/runner/cypress_runner.js:3621:12)
      at _drainQueue (http://localhost:4200/__cypress/runner/cypress_runner.js:3614:9)
      at ../../node_modules/bluebird/js/release/async.js.Async._drainQueues (http://localhost:4200/__cypress/runner/cypress_runner.js:3630:5)
      at Async.drainQueues (http://localhost:4200/__cypress/runner/cypress_runner.js:3500:14)
  From Your Spec Code:
      at Context.eval (webpack:///./src/e2e/app.cy.ts:46:23)

  39) Docs
       Version: 2.3.0
         Section: Migrating
           Page: Migrating plugins
             has valid links:
     CypressError: `cy.request()` failed on:

https://github.com/eclipse/che/issues/18668

The response we received from your web server was:

  > 404: Not Found

This was considered a failure because the status code was not `2xx` or `3xx`.

If you do not want status codes to cause failures pass the option: `failOnStatusCode: false`

-----------------------------------------------------------

The request we sent was:

Method: GET
URL: https://github.com/eclipse/che/issues/18668
Headers: {
  "Connection": "keep-alive",
  "user-agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Cypress/12.6.0 Chrome/106.0.5249.51 Electron/21.0.0 Safari/537.36",
  "accept": "*/*",
  "cookie": "logged_in=no; _octo=GH1.1.1566085490.1753116507; _gh_sess=7R46o7Z%2BAMQHwjs7q26vneSFVip0ZoM5ozTuBDB2xpraRf0xZ0UuN1%2FdAzdMZR4%2B3XR1rL1YMIOp5blYQo0NHNrMx0zQQDkOQAdKpXxmLFErJDM0siK0%2BuPDxva4mT%2BtvsOWkA4TF2%2FNc18gL7PgHUBC6cILuZCKDcq1qoL9CnsoGGYowz91LWZ3OodZHqBJ19nN2PQfG9ahxHPWJstX4t%2F8W7P%2FYvsm0lT4h316nHa0hUS8pHqSe3btnMkV1COFvqMyjU01wutGqm01Jtm5Ww%3D%3D--ogiUkOF%2Bh4QXH8Bd--Hx8Jbp%2B66p1KsQqCvdzSfg%3D%3D",
  "accept-encoding": "gzip, deflate"
}

-----------------------------------------------------------

The response we got was:

Status: 404 - Not Found
Headers: {
  "date": "Mon, 21 Jul 2025 16:48:29 GMT",
  "content-type": "text/plain; charset=utf-8",
  "content-length": "9",
  "server-timing": "nginx;desc=\"NGINX\";dur=0.826995,glb;desc=\"GLB\";dur=47.808993",
  "x-voltron-version": "fd8fbbc",
  "vary": "Accept-Encoding, Accept, X-Requested-With",
  "server": "github.com",
  "x-frame-options": "DENY",
  "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
  "x-github-request-id": "B000:3B9021:6FE1C7:737A1C:687E6F5C"
}
Body: Not Found


https://on.cypress.io/request
      at <unknown> (http://localhost:4200/__cypress/runner/cypress_runner.js:139725:80)
      at tryCatcher (http://localhost:4200/__cypress/runner/cypress_runner.js:8914:23)
      at Promise._settlePromiseFromHandler (http://localhost:4200/__cypress/runner/cypress_runner.js:6849:31)
      at Promise._settlePromise (http://localhost:4200/__cypress/runner/cypress_runner.js:6906:18)
      at Promise._settlePromise0 (http://localhost:4200/__cypress/runner/cypress_runner.js:6951:10)
      at Promise._settlePromises (http://localhost:4200/__cypress/runner/cypress_runner.js:7031:18)
      at _drainQueueStep (http://localhost:4200/__cypress/runner/cypress_runner.js:3621:12)
      at _drainQueue (http://localhost:4200/__cypress/runner/cypress_runner.js:3614:9)
      at ../../node_modules/bluebird/js/release/async.js.Async._drainQueues (http://localhost:4200/__cypress/runner/cypress_runner.js:3630:5)
      at Async.drainQueues (http://localhost:4200/__cypress/runner/cypress_runner.js:3500:14)
  From Your Spec Code:
      at Context.eval (webpack:///./src/e2e/app.cy.ts:46:23)




  (Results)
...

See full log here: https://cloud.nx.app/runs/kPdJ58Yoet

Additional Context

No response

Any workaround?

N/A

Suggestion on how to fix the bug

Since GitHub URLs are generally valid (i.e. slugs don't change, pages don't get taken down) I recommend skipping github.com URLs to avoid failing on valid links.

Alternatively, if we needed to keep checking every link, including github.com ones, we could investigate rate limits and implement test case options to work around the rate limit (i.e. limit requests to the rate limits set out by GitHub).

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    Status

    Backlog

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions