Skip to content

Commit 72905b7

Browse files
committed
test: move range-header.test.js to Playwright
1 parent 7f54b1e commit 72905b7

File tree

1 file changed

+115
-0
lines changed

1 file changed

+115
-0
lines changed
Lines changed: 115 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,115 @@
1+
"use strict";
2+
3+
const request = require("supertest");
4+
const webpack = require("webpack");
5+
const { test } = require("@playwright/test");
6+
const { describe } = require("@playwright/test");
7+
const { expect } = require("@playwright/test");
8+
const { beforeAll, afterAll } = require("@playwright/test");
9+
const Server = require("../../lib/Server");
10+
const config = require("../fixtures/static-config/webpack.config");
11+
const port = require("../ports-map")["range-header"];
12+
13+
describe("'Range' header", () => {
14+
let compiler;
15+
let server;
16+
17+
beforeAll(async () => {
18+
compiler = webpack(config);
19+
20+
server = new Server({ port }, compiler);
21+
22+
await server.start();
23+
});
24+
25+
afterAll(async () => {
26+
await server.stop();
27+
});
28+
29+
test('should work with "Range" header using "GET" method', async () => {
30+
const response = await request(server.app).get("/main.js");
31+
32+
expect(response.status).toBe(200);
33+
expect(response.headers["content-type"]).toBe(
34+
"application/javascript; charset=utf-8",
35+
);
36+
expect(response.headers["accept-ranges"]).toBe("bytes");
37+
38+
const responseContent = response.text;
39+
const responseRange = await request(server.app)
40+
.get("/main.js")
41+
.set("Range", "bytes=0-499");
42+
43+
expect(responseRange.status).toBe(206);
44+
expect(responseRange.headers["content-type"]).toBe(
45+
"application/javascript; charset=utf-8",
46+
);
47+
expect(responseRange.headers["content-length"]).toBe("500");
48+
expect(responseRange.headers["content-range"]).toMatch(/^bytes 0-499\//);
49+
expect(responseRange.text).toBe(responseContent.slice(0, 500));
50+
expect(responseRange.text.length).toBe(500);
51+
});
52+
53+
test('should work with "Range" header using "HEAD" method', async () => {
54+
const response = await request(server.app).head("/main.js");
55+
56+
expect(response.status).toBe(200);
57+
expect(response.headers["content-type"]).toBe(
58+
"application/javascript; charset=utf-8",
59+
);
60+
expect(response.headers["accept-ranges"]).toBe("bytes");
61+
62+
const responseRange = await request(server.app)
63+
.head("/main.js")
64+
.set("Range", "bytes=0-499");
65+
66+
expect(responseRange.status).toBe(206);
67+
expect(responseRange.headers["content-type"]).toBe(
68+
"application/javascript; charset=utf-8",
69+
);
70+
expect(responseRange.headers["content-length"]).toBe("500");
71+
expect(responseRange.headers["content-range"]).toMatch(/^bytes 0-499\//);
72+
});
73+
74+
test('should work with unsatisfiable "Range" header using "GET" method', async () => {
75+
const response = await request(server.app).get("/main.js");
76+
77+
expect(response.status).toBe(200);
78+
expect(response.headers["content-type"]).toBe(
79+
"application/javascript; charset=utf-8",
80+
);
81+
expect(response.headers["accept-ranges"]).toBe("bytes");
82+
83+
const responseRange = await request(server.app)
84+
.get("/main.js")
85+
.set("Range", "bytes=99999999999-");
86+
87+
expect(responseRange.status).toBe(416);
88+
expect(responseRange.headers["content-type"]).toBe(
89+
"text/html; charset=utf-8",
90+
);
91+
expect(responseRange.headers["content-range"]).toMatch(/^bytes \*\//);
92+
});
93+
94+
test('should work with malformed "Range" header using "GET" method', async () => {
95+
const response = await request(server.app).get("/main.js");
96+
97+
expect(response.status).toBe(200);
98+
expect(response.headers["content-type"]).toBe(
99+
"application/javascript; charset=utf-8",
100+
);
101+
expect(response.headers["accept-ranges"]).toBe("bytes");
102+
103+
const responseContent = response.text;
104+
const responseRange = await request(server.app)
105+
.get("/main.js")
106+
.set("Range", "bytes");
107+
108+
expect(responseRange.status).toBe(200);
109+
expect(responseRange.headers["content-type"]).toBe(
110+
"application/javascript; charset=utf-8",
111+
);
112+
expect(responseRange.text).toBe(responseContent);
113+
expect(responseRange.text.length).toBe(responseContent.length);
114+
});
115+
});

0 commit comments

Comments
 (0)