|
4 | 4 | * SPDX-License-Identifier: Apache-2.0 |
5 | 5 | */ |
6 | 6 |
|
7 | | -const KB = 1024; |
8 | | -import assert from 'assert/strict'; |
9 | | - |
10 | 7 | import ResponsesAreCompressedAudit from '../../../audits/byte-efficiency/uses-text-compression.js'; |
11 | 8 |
|
| 9 | +const KB = 1024; |
| 10 | +const MB = 1024 * KB; |
| 11 | + |
12 | 12 | function generateResponse(options) { |
13 | | - return Object.assign({ |
| 13 | + return { |
14 | 14 | url: `http://google.com/${options.file}`, |
15 | 15 | transferSize: options.resourceSize || 0, |
16 | 16 | resourceSize: 0, |
17 | 17 | gzipSize: 0, |
18 | | - }, options); |
| 18 | + ...options, |
| 19 | + }; |
19 | 20 | } |
20 | 21 |
|
21 | 22 | describe('Page uses optimized responses', () => { |
22 | | - it('fails when responses are collectively unoptimized', () => { |
23 | | - const auditResult = ResponsesAreCompressedAudit.audit_({ |
24 | | - ResponseCompression: [ |
25 | | - generateResponse({file: 'index.js', resourceSize: 100 * KB, gzipSize: 90 * KB}), // 10kb & 10% |
26 | | - generateResponse({file: 'index.css', resourceSize: 50 * KB, gzipSize: 37 * KB}), // 13kb & 26% (hit) |
27 | | - generateResponse({file: 'index.json', resourceSize: 2048 * KB, gzipSize: 1024 * KB}), // 1024kb & 50% (hit) |
28 | | - ], |
29 | | - }); |
30 | | - |
31 | | - assert.equal(auditResult.items.length, 2); |
32 | | - }); |
33 | | - |
34 | | - it('passes when all responses are sufficiently optimized', () => { |
| 23 | + it('applies a threshold', () => { |
35 | 24 | const auditResult = ResponsesAreCompressedAudit.audit_({ |
36 | 25 | ResponseCompression: [ |
37 | | - generateResponse({file: 'index.js', resourceSize: 1000 * KB, gzipSize: 910 * KB}), // 90kb & 9% |
38 | | - generateResponse({file: 'index.css', resourceSize: 6 * KB, gzipSize: 4.5 * KB}), // 1,5kb & 25% (hit) |
39 | | - generateResponse({file: 'index.json', resourceSize: 10 * KB, gzipSize: 10 * KB}), // 0kb & 0% |
| 26 | + generateResponse({file: 'index.js', resourceSize: 1000 * KB, gzipSize: 910 * KB}), // 90kb (hit) |
| 27 | + generateResponse({file: 'index.css', resourceSize: 6 * KB, gzipSize: 4.8 * KB}), // 1.2kb |
| 28 | + generateResponse({file: 'index2.css', resourceSize: 50 * KB, gzipSize: 37 * KB}), // 13kb (hit) |
| 29 | + generateResponse({file: 'index.json', resourceSize: 10 * KB, gzipSize: 10 * KB}), // 0kb |
| 30 | + generateResponse({file: 'uncompressed.xcustom', resourceSize: 11 * MB, gzipSize: 10 * MB}), // 1mb (hit) |
40 | 31 | generateResponse({file: 'compressed.json', resourceSize: 10 * KB, transferSize: 3 * KB, |
41 | | - gzipSize: 6 * KB}), // 0kb & 0% |
| 32 | + gzipSize: 6 * KB}), // 0kb |
42 | 33 | ], |
43 | 34 | }); |
44 | 35 |
|
45 | | - assert.equal(auditResult.items.length, 1); |
| 36 | + expect(auditResult.items.map(item => item.url)).toEqual( |
| 37 | + ['http://google.com/index.js', 'http://google.com/index2.css', 'http://google.com/uncompressed.xcustom']); |
46 | 38 | }); |
47 | 39 | }); |
0 commit comments