Skip to content

Commit

Permalink
fix(build): support node 18
Browse files Browse the repository at this point in the history
  • Loading branch information
lukaVarga committed May 17, 2023
1 parent b1720a6 commit 91f68f2
Show file tree
Hide file tree
Showing 8 changed files with 13,270 additions and 8,176 deletions.
8 changes: 4 additions & 4 deletions .github/workflows/semantic-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ jobs:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 14
node-version: 18
- run: npm ci
- run: npm run lint
tests:
Expand All @@ -27,7 +27,7 @@ jobs:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 14
node-version: 18
- name: Run tests
run: |
npm ci
Expand All @@ -44,7 +44,7 @@ jobs:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 14
node-version: 18
- name: Build JS and dist versions
run: |
npm ci
Expand Down Expand Up @@ -76,7 +76,7 @@ jobs:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 14
node-version: 18
- run: npm ci
- name: Download artifacts
uses: actions/download-artifact@v3
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/test-runner.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,6 @@ jobs:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 14
node-version: 18
- run: npm ci
- run: npm test
16 changes: 8 additions & 8 deletions __tests__/buildtime/analyse_images.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ describe('analyseImages', () => {

test('it asks user for images path', async () => {
await analyseImages();
await expect(promptly.prompt).toBeCalledWith('Path to images folder (defaults to public/images): ',
expect(promptly.prompt).toBeCalledWith('Path to images folder (defaults to public/images): ',
{default: 'public/images'});
});

Expand All @@ -32,29 +32,29 @@ describe('analyseImages', () => {
FileHelpers.findFilesInDir = jest.fn().mockReturnValue([]);

await analyseImages();
await expect(console.log).toHaveBeenCalledWith(
expect(console.log).toHaveBeenCalledWith(
consoleMessage('started analysing images, depending on the number of images and image sizes, this might take a while'));
});

test('it skips images with a progressive version', async () => {
console.log = jest.fn();
FileHelpers.findFilesInDir = jest.fn().mockReturnValue(IMG_SAMPLES);
await analyseImages();
await expect(console.log).not
expect(console.log).not
.toHaveBeenCalledWith(consoleMessage('analysing image __tests__/buildtime/img-samples/sample-6-OptimusIMG-progressive.jpg ...'));
});

test('it notifies user that it finished analysing images', async () => {
console.log = jest.fn();
await analyseImages();
await expect(console.log).toHaveBeenCalledWith(consoleMessage('finished analysing images'));
expect(console.log).toHaveBeenCalledWith(consoleMessage('finished analysing images'));
});

test('it notifies user to consider converting icons', async () => {
console.warn = jest.fn();
FileHelpers.findFilesInDir = jest.fn().mockReturnValue(IMG_SAMPLES);
await analyseImages();
await expect(console.warn).toHaveBeenCalledWith(
expect(console.warn).toHaveBeenCalledWith(
consoleMessage('consider converting __tests__/buildtime/img-samples/icon-sample-7.png icon' +
' in SVG format for optimised load and display on different screens'));
});
Expand All @@ -64,7 +64,7 @@ describe('analyseImages', () => {
FileHelpers.findFilesInDir = jest.fn().mockReturnValue(['__tests__/buildtime/img-samples/sample-8-uncompressed.jpg']);

await analyseImages();
await expect(console.warn).toHaveBeenCalledWith(
expect(console.warn).toHaveBeenCalledWith(
consoleMessage('consider compressing __tests__/buildtime/img-samples/sample-8-uncompressed.jpg' +
' to achieve a quicker webpage load time (BIG LOAD TIME EFFECT)'));
});
Expand All @@ -74,7 +74,7 @@ describe('analyseImages', () => {
FileHelpers.findFilesInDir = jest.fn().mockReturnValue(['__tests__/buildtime/img-samples/sample-5.jpg']);

await analyseImages();
await expect(console.log).toHaveBeenCalledWith(
expect(console.log).toHaveBeenCalledWith(
consoleMessage('consider further compression of __tests__/buildtime/img-samples/sample-5.jpg' +
' to achieve a quicker webpage load time (MEDIUM LOAD TIME EFFECT)'));
});
Expand All @@ -85,6 +85,6 @@ describe('analyseImages', () => {
ColorHelpers.colorDiffCategory = jest.fn().mockImplementationOnce(() => { throw new Error('error'); });

await analyseImages();
await expect(console.error).toHaveBeenCalledTimes(1);
expect(console.error).toHaveBeenCalledTimes(1);
});
});
14 changes: 7 additions & 7 deletions __tests__/buildtime/helpers/file.helpers.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -76,44 +76,44 @@ describe('FileHelpers', () => {
const RESULT: IImageCompressionLevel =
await FileHelpers.imageCompressionLevel('__tests__/buildtime/img-samples/sample-2.jpeg');

await expect(RESULT).toBe('high-compression');
expect(RESULT).toBe('high-compression');
});

test('image with medium compression', async () => {
const RESULT: IImageCompressionLevel =
await FileHelpers.imageCompressionLevel('__tests__/buildtime/img-samples/sample-5.jpg');

await expect(RESULT).toBe('medium-compression');
expect(RESULT).toBe('medium-compression');
});

test('image with low compression', async () => {
const RESULT: IImageCompressionLevel =
await FileHelpers.imageCompressionLevel('__tests__/buildtime/img-samples/sample-9-uncompressed.png');

await expect(RESULT).toBe('low-compression');
expect(RESULT).toBe('low-compression');
});

test('tiny image with low compression', async () => {
const RESULT: IImageCompressionLevel =
await FileHelpers.imageCompressionLevel('__tests__/buildtime/img-samples/sample-1.jpg');

await expect(RESULT).toBe(undefined);
expect(RESULT).toBe(undefined);
});

test('image with too big a size', async () => {
const RESULT: IImageCompressionLevel =
await FileHelpers.imageCompressionLevel('__tests__/buildtime/img-samples/sample-8-uncompressed.jpg');

await expect(RESULT).toBe('low-compression');
expect(RESULT).toBe('low-compression');
});

test('user is warned if image cannot be found', async () => {
console.warn = jest.fn();

const RESULT: IImageCompressionLevel = await FileHelpers.imageCompressionLevel('fake');

await expect(console.warn).toHaveBeenCalledWith(consoleMessage('image not found: fake'));
await expect(RESULT).toBe(undefined);
expect(console.warn).toHaveBeenCalledWith(consoleMessage('image not found: fake'));
expect(RESULT).toBe(undefined);
});
});
});
53 changes: 26 additions & 27 deletions __tests__/buildtime/prepare_progressive_images.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -58,35 +58,35 @@ describe('prepareProgressiveImages', () => {

test('it asks user for images path', async () => {
await prepareProgressiveImages();
await expect(promptly.prompt).toBeCalledWith('Path to images folder (defaults to public/images): ',
expect(promptly.prompt).toBeCalledWith('Path to images folder (defaults to public/images): ',
{default: 'public/images'});
});

test('it asks user if it should generate webp', async () => {
await prepareProgressiveImages();
await expect(promptly.prompt).toBeCalledWith('Generate webp (Y/n): ',
expect(promptly.prompt).toBeCalledWith('Generate webp (Y/n): ',
{default: 'Y'});
});

test('it asks user if it should generate low resolution variants', async () => {
await prepareProgressiveImages();
await expect(promptly.prompt).toBeCalledWith('Generate low resolution variants (Y/n): ',
expect(promptly.prompt).toBeCalledWith('Generate low resolution variants (Y/n): ',
{default: 'Y'});
});

test('it notifies user that it started preparing images', async () => {
console.log = jest.fn();
await prepareProgressiveImages();
await expect(console.log).toHaveBeenCalledWith(consoleMessage('started preparing progressive images'));
expect(console.log).toHaveBeenCalledWith(consoleMessage('started preparing progressive images'));
});

test('it skips images which already have a progressive version', async () => {
console.log = jest.fn();
await prepareProgressiveImages();
await expect(console.log).not
expect(console.log).not
.toHaveBeenCalledWith(consoleMessage('prepared low res image __tests__/buildtime/img-samples/sample-6-OptimusIMG-progressive.jpg'));

await expect(console.log)
expect(console.log)
.toHaveBeenCalledWith(consoleMessage('skipping image __tests__/buildtime/img-samples/sample-6.jpg ' +
'as it already has a progressive version'));
});
Expand All @@ -95,20 +95,20 @@ describe('prepareProgressiveImages', () => {
console.log = jest.fn();

await prepareProgressiveImages();
await expect(console.log)
expect(console.log)
.toHaveBeenCalledWith(consoleMessage('prepared low res image __tests__/buildtime/img-samples/sample-1-OptimusIMG-progressive.jpg'));
await expect(console.log)
expect(console.log)
.toHaveBeenCalledWith(consoleMessage('prepared low res image __tests__/buildtime/img-samples/sample-2-OptimusIMG-progressive.jpeg'));
await expect(console.log)
expect(console.log)
.toHaveBeenCalledWith(consoleMessage('prepared low res image __tests__/buildtime/img-samples/sample-4-OptimusIMG-progressive.png'));
await expect(console.log)
expect(console.log)
.toHaveBeenCalledWith(consoleMessage('prepared low res image __tests__/buildtime/img-samples/sample-5-OptimusIMG-progressive.jpg'));
});

test('it notifies user that it finished preparing images', async () => {
console.log = jest.fn();
await prepareProgressiveImages();
await expect(console.log).toHaveBeenCalledWith(consoleMessage('finished preparing progressive images'));
expect(console.log).toHaveBeenCalledWith(consoleMessage('finished preparing progressive images'));
});

describe('generate webp is true', () => {
Expand All @@ -129,13 +129,13 @@ describe('prepareProgressiveImages', () => {
console.log = jest.fn();

await prepareProgressiveImages();
await expect(console.log)
expect(console.log)
.toHaveBeenCalledWith(consoleMessage('generated webp __tests__/buildtime/img-samples/sample-1.webp'));
await expect(console.log)
expect(console.log)
.toHaveBeenCalledWith(consoleMessage('generated webp __tests__/buildtime/img-samples/sample-2.webp'));
await expect(console.log)
expect(console.log)
.toHaveBeenCalledWith(consoleMessage('generated webp __tests__/buildtime/img-samples/sample-4.webp'));
await expect(console.log)
expect(console.log)
.toHaveBeenCalledWith(consoleMessage('generated webp __tests__/buildtime/img-samples/sample-5.webp'));
});
});
Expand All @@ -158,27 +158,27 @@ describe('prepareProgressiveImages', () => {
console.log = jest.fn();

await prepareProgressiveImages();
await expect(console.log)
expect(console.log)
.toHaveBeenCalledWith(consoleMessage('generated webp __tests__/buildtime/img-samples/sample-1.webp'));
await expect(console.log)
expect(console.log)
.toHaveBeenCalledWith(consoleMessage('generated webp __tests__/buildtime/img-samples/sample-2.webp'));
await expect(console.log)
expect(console.log)
.toHaveBeenCalledWith(consoleMessage('generated webp __tests__/buildtime/img-samples/sample-4.webp'));
await expect(console.log)
expect(console.log)
.toHaveBeenCalledWith(consoleMessage('generated webp __tests__/buildtime/img-samples/sample-5.webp'));
});

test('it notifies user for each prepared low res webp image', async () => {
console.log = jest.fn();

await prepareProgressiveImages();
await expect(console.log)
expect(console.log)
.toHaveBeenCalledWith(consoleMessage('generated webp __tests__/buildtime/img-samples/sample-1-OptimusIMG-progressive.webp'));
await expect(console.log)
expect(console.log)
.toHaveBeenCalledWith(consoleMessage('generated webp __tests__/buildtime/img-samples/sample-2-OptimusIMG-progressive.webp'));
await expect(console.log)
expect(console.log)
.toHaveBeenCalledWith(consoleMessage('generated webp __tests__/buildtime/img-samples/sample-4-OptimusIMG-progressive.webp'));
await expect(console.log)
expect(console.log)
.toHaveBeenCalledWith(consoleMessage('generated webp __tests__/buildtime/img-samples/sample-5-OptimusIMG-progressive.webp'));
});
});
Expand Down Expand Up @@ -211,16 +211,15 @@ describe('prepareProgressiveImages', () => {

test('it notifies user if it encounters error for specific file', async () => {
console.error = jest.fn();

FileHelpers.findFilesInDir = jest.fn().mockReturnValue([
'__tests__/buildtime/img-samples/sample-1.jpg',
'__tests__/buildtime/img-samples/text-file-sample.txt',
'__tests__/buildtime/img-samples/sample-5.jpg',
]);

await prepareProgressiveImages();
await expect(console.error).toHaveBeenCalledTimes(1);
await expect(fs.existsSync('__tests__/buildtime/img-samples/sample-1-OptimusIMG-progressive.jpg')).toBe(true);
await expect(fs.existsSync('__tests__/buildtime/img-samples/sample-5-OptimusIMG-progressive.jpg')).toBe(true);
expect(console.error).toHaveBeenCalledTimes(1);
expect(fs.existsSync('__tests__/buildtime/img-samples/sample-1-OptimusIMG-progressive.jpg')).toBe(true);
});
});
});
2 changes: 1 addition & 1 deletion __tests__/helpers/polyfill.helpers.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ describe('PolyfillHelpers', () => {
return true;
});

await expect(NUMBERS).toEqual([0, 1, 2, 3]);
expect(NUMBERS).toEqual([0, 1, 2, 3]);
});
});
});
Loading

0 comments on commit 91f68f2

Please sign in to comment.