Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PR preview pages don't handle visit to non deployed pages well #37764

Open
OnkarRuikar opened this issue Jan 23, 2025 · 1 comment · May be fixed by #37769
Open

PR preview pages don't handle visit to non deployed pages well #37764

OnkarRuikar opened this issue Jan 23, 2025 · 1 comment · May be fixed by #37769
Labels
infra Infrastructure issues (npm, GitHub Actions, linting) for this repo

Comments

@OnkarRuikar
Copy link
Contributor

Summary

Previews generated by the PR review companion include only the modified files. On preview pages, links to other unmodified pages give a 404 error. Also, the error is wrong: Key: pr37670/en-us/_spas/404.html. Following is the content of the 404 response:

404 Not Found
Code: NoSuchKey
Message: The specified key does not exist.
Key: pr37670/en-us/_spas/404.html
RequestId: W9ZG8PFR8V5N0MK5
HostId: EoaAHM8g7wgSv7rGa1dRb6/F9o5Pg93I6h0iZVYuA8A5x1RrlpNKgHZVADEZDyl/ZnC2KuEdIr8=

Reviewers find it annoying to see the 404 page instead of the requested page, even though it's not modified in the PR. It would be better if, on the 404 page, there is a link to the page on the production site.

Steps to reproduce

  1. Open any latest PR in the mdn/content repo.
  2. Open any preview page.
  3. On the page, click on any link to an MDN page that is not modified in the PR.
  4. You'll get pr37670/en-us/_spas/404.html not found error.

Solution

The solution is based on the TamporMonkey script created by Will. The script adds a link to the same doc on the production site. Instead of TamporMonkey, we can do it in the deployer code itself.\

During dev deployments for PRs, populate the /en-us/_spas/404.html file with the following content:

<!DOCTYPE html>
<HTML>
  <head>
      <title>404 Page Not Found</title>
  </head>
  <body>
    <h1>404 Page Not Found</h1>
    <script>
      if (document.location.hostname.endsWith("content.dev.mdn.mozit.cloud")) {
        const link = document.createElement("a");
        link.href = `https://developer.mozilla.org${document.location.pathname}`;
        link.textContent = "View on MDN production server.";
        document.body.appendChild(link);
      }
    </script>
  </body>
</html>

Note: Ignore the fact that PR build doesn't populate the original _spas/404.html. The production style 404 page is not useful in PR previews anyway.

@github-actions github-actions bot added the needs triage Triage needed by staff and/or partners. Automatically applied when an issue is opened. label Jan 23, 2025
@caugner
Copy link
Contributor

caugner commented Jan 23, 2025

The root cause for the missing 404 page is that it was moved from /{locale}/_spas/404.html to /{locale}/404/index.html in mdn/yari#12248, while CloudFront was still configured to serve it from /en-US/_spas/404.html.

I have now updated the CloudFront config to serve the correct error page.

@Josh-Cena Josh-Cena added infra Infrastructure issues (npm, GitHub Actions, linting) for this repo and removed needs triage Triage needed by staff and/or partners. Automatically applied when an issue is opened. labels Jan 23, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
infra Infrastructure issues (npm, GitHub Actions, linting) for this repo
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants