Skip to content

Commit

Permalink
Add failing test case for throwing a response stub with a 3xx status …
Browse files Browse the repository at this point in the history
…from a resource route
  • Loading branch information
haines committed May 22, 2024
1 parent 6eb6acf commit 5f04ff8
Showing 1 changed file with 14 additions and 36 deletions.
50 changes: 14 additions & 36 deletions integration/bug-report-test.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import { test, expect } from "@playwright/test";

import { PlaywrightFixture } from "./helpers/playwright-fixture.js";
import type { Fixture, AppFixture } from "./helpers/create-fixture.js";
import {
createAppFixture,
Expand Down Expand Up @@ -57,30 +56,22 @@ test.beforeAll(async () => {
// 💿 Next, add files to this object, just like files in a real app,
// `createFixture` will make an app and run your tests against it.
////////////////////////////////////////////////////////////////////////////
config: {
future: {
unstable_singleFetch: true,
},
},
files: {
"app/routes/_index.tsx": js`
import { json } from "@remix-run/node";
import { useLoaderData, Link } from "@remix-run/react";
export function loader() {
return json("pizza");
}
import { unstable_defineLoader as defineLoader } from "@remix-run/node";
export default function Index() {
let data = useLoaderData();
return (
<div>
{data}
<Link to="/burgers">Other Route</Link>
</div>
)
}
`,
export const loader = defineLoader(({ response }) => {
response.status = 302;
response.headers.set("Location", "/hello");
throw response;
});
"app/routes/burgers.tsx": js`
export default function Index() {
return <div>cheeseburger</div>;
}
// no default export
`,
},
});
Expand All @@ -98,22 +89,9 @@ test.afterAll(() => {
// add a good description for what you expect Remix to do 👇🏽
////////////////////////////////////////////////////////////////////////////////

test("[description of what you expect it to do]", async ({ page }) => {
let app = new PlaywrightFixture(appFixture, page);
// You can test any request your app might get using `fixture`.
test("throwing a response stub from a resource route redirects", async () => {
let response = await fixture.requestDocument("/");
expect(await response.text()).toMatch("pizza");

// If you need to test interactivity use the `app`
await app.goto("/");
await app.clickLink("/burgers");
await page.waitForSelector("text=cheeseburger");

// If you're not sure what's going on, you can "poke" the app, it'll
// automatically open up in your browser for 20 seconds, so be quick!
// await app.poke(20);

// Go check out the other tests to see what else you can do.
expect(response.status).toBe(302);
});

////////////////////////////////////////////////////////////////////////////////
Expand Down

0 comments on commit 5f04ff8

Please sign in to comment.