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

Github Actions: Check, Test & Integration Tests #37

Merged
Merged
Changes from 1 commit
Commits
Show all changes
85 commits
Select commit Hold shift + click to select a range
3c7d31a
Add playwright
tijmenbruggeman Jan 14, 2025
7ff7e89
Adjust test script
tijmenbruggeman Jan 14, 2025
76c822c
Add playwright to gitignore
tijmenbruggeman Jan 14, 2025
02a58e8
Add current dir to wp-env
tijmenbruggeman Jan 14, 2025
c8d0225
Only keep mock service
tijmenbruggeman Jan 14, 2025
ec8748d
Refer to compose mock service in fixture
tijmenbruggeman Jan 14, 2025
5550427
Add settings test
tijmenbruggeman Jan 14, 2025
6314bcb
Add github workflow
tijmenbruggeman Jan 20, 2025
a2fea70
Add wordpress/scripts
tijmenbruggeman Jan 20, 2025
b42ab7b
Use port in script
tijmenbruggeman Jan 20, 2025
476bc10
Merge remote-tracking branch 'upstream/master' into integration-tests…
tijmenbruggeman Jan 20, 2025
fba5f07
Use docker without compose in workflow
tijmenbruggeman Jan 20, 2025
3d3c389
Add a badge
tijmenbruggeman Jan 20, 2025
3cd38fb
Add unit test workflow
tijmenbruggeman Jan 21, 2025
5c805a0
add phpunit
tijmenbruggeman Jan 21, 2025
3129e8e
Move to root
tijmenbruggeman Jan 21, 2025
3e8c4de
Add check
tijmenbruggeman Jan 21, 2025
84adc82
Remove checkout
tijmenbruggeman Jan 21, 2025
5477944
Add bash shell
tijmenbruggeman Jan 21, 2025
51cce37
Only use 7.4
tijmenbruggeman Jan 21, 2025
46e0f99
Ignore root vendor as well
tijmenbruggeman Jan 21, 2025
17e0110
Continue on failed check
tijmenbruggeman Jan 21, 2025
28d9efc
Remove badge
tijmenbruggeman Jan 22, 2025
0522382
Use the specified Wordpress version for wp-env
tijmenbruggeman Jan 22, 2025
dedbb07
Adjust run-wordpress script to use wp-env
tijmenbruggeman Jan 22, 2025
101b4fe
Add node and remove Phantom and SQL Client
tijmenbruggeman Jan 22, 2025
7c91e9d
Use docker host instead of localhost
tijmenbruggeman Jan 22, 2025
087e0aa
Remove compose file
tijmenbruggeman Jan 22, 2025
8a8b4e0
Finish settings test
tijmenbruggeman Jan 22, 2025
5fe79c0
Replace more integration tests
tijmenbruggeman Jan 22, 2025
91bf4a4
Settings integration tests
tijmenbruggeman Jan 25, 2025
bc3475f
Remove integration test utils
tijmenbruggeman Jan 25, 2025
2e9c437
Replace plugin tests
tijmenbruggeman Jan 27, 2025
43d5301
Add utils and dashboard tests
tijmenbruggeman Jan 27, 2025
8d36ada
Add require
tijmenbruggeman Jan 27, 2025
2b17cfe
Update to 3.4.6
tijmenbruggeman Jan 27, 2025
0ad4a28
Bump to 3.4.6
tijmenbruggeman Jan 27, 2025
2a4eb93
Move import up
tijmenbruggeman Jan 27, 2025
9c6da96
Add changelog
tijmenbruggeman Jan 27, 2025
5c24409
Change host for mock
tijmenbruggeman Jan 27, 2025
c5acbb5
Add config replacement
tijmenbruggeman Jan 27, 2025
b0cf9ee
Change host in fixtures
tijmenbruggeman Jan 27, 2025
383c17f
Replace dashboard tests
tijmenbruggeman Jan 27, 2025
b17b1d5
Merge branch 'master' of github.com:wcreateweb/wordpress-plugin into …
tijmenbruggeman Jan 27, 2025
f946954
Compression tests
tijmenbruggeman Jan 27, 2025
22ba734
Additional compress tests
tijmenbruggeman Jan 27, 2025
7b3f119
Compression tests
tijmenbruggeman Jan 28, 2025
e956017
bulkoptimization tests
tijmenbruggeman Jan 28, 2025
648b0fb
Finish up existing integration tests
tijmenbruggeman Jan 28, 2025
3501496
Check for webP support in tests
tijmenbruggeman Jan 28, 2025
ae622be
Handle dimensions formatted as <6.7
tijmenbruggeman Jan 28, 2025
dfa4686
Add multiple version of wordpress in tests
tijmenbruggeman Jan 28, 2025
36d464c
Refer to matrix
tijmenbruggeman Jan 28, 2025
fe4bd25
Cache playwright
tijmenbruggeman Jan 28, 2025
2b05b53
Change upload action
tijmenbruggeman Jan 28, 2025
8a78095
Make screenshot on failure
tijmenbruggeman Jan 28, 2025
2fea032
Wait for js libs
tijmenbruggeman Jan 28, 2025
afb1abe
Add report
tijmenbruggeman Jan 28, 2025
28f7557
Use explicit browser uploader
tijmenbruggeman Jan 28, 2025
eb3db2a
Different way of getting version
tijmenbruggeman Jan 28, 2025
6ebdd71
Go to dashboard for version nr
tijmenbruggeman Jan 28, 2025
38f7087
Single page test
tijmenbruggeman Jan 28, 2025
e32bdf2
Remove the local page
tijmenbruggeman Jan 28, 2025
720b07f
Adjust test
tijmenbruggeman Jan 28, 2025
ceb6639
Add integration tests
tijmenbruggeman Jan 31, 2025
73c6439
Change PHP input
tijmenbruggeman Jan 31, 2025
61ddf1e
Add wp 55
tijmenbruggeman Jan 31, 2025
c8a8dc7
Change matrix
tijmenbruggeman Jan 31, 2025
3f6e0c9
Remove type hinting for php < 7
tijmenbruggeman Jan 31, 2025
3472305
Remove old test files
tijmenbruggeman Jan 31, 2025
1096bd9
Use id for older versions of wp
tijmenbruggeman Jan 31, 2025
5351d8d
Version text for old versions
tijmenbruggeman Jan 31, 2025
de357e3
Add mock runner
tijmenbruggeman Jan 31, 2025
30510c5
Add more versions
tijmenbruggeman Jan 31, 2025
1f98e3c
Adapt tests to lower version of php
tijmenbruggeman Jan 31, 2025
714c832
Up version to 4.0
tijmenbruggeman Jan 31, 2025
1ce4dea
Change report to include wp and php version
tijmenbruggeman Jan 31, 2025
af759a9
Resolve issues on 5.7
tijmenbruggeman Jan 31, 2025
bec3df8
Image sizes per wordpress enviroment
tijmenbruggeman Jan 31, 2025
ff81a40
Change state when required
tijmenbruggeman Jan 31, 2025
415cd32
Only below 5.7 is less optimized
tijmenbruggeman Jan 31, 2025
3c288c6
1 retry in CI
tijmenbruggeman Jan 31, 2025
07c68aa
Only run on master
tijmenbruggeman Jan 31, 2025
a4df2e7
Add REST API uploaded test
tijmenbruggeman Feb 4, 2025
cda2be8
Skip REST API check for now
tijmenbruggeman Feb 4, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
bulkoptimization tests
tijmenbruggeman committed Jan 28, 2025
commit e95601751e8cc0ec6a9152eb55accd6bb114490d
172 changes: 0 additions & 172 deletions test/integration/BulkOptimizationIntegrationTest.php

This file was deleted.

243 changes: 0 additions & 243 deletions test/integration/CompressIntegrationTest.php

This file was deleted.

171 changes: 171 additions & 0 deletions test/integration/bulkoptimization.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,171 @@
import { Page, expect, test } from '@playwright/test';
import { clearMediaLibrary, enableCompressionSizes, setAPIKey, setCompressionTiming, setOriginalImage, uploadMedia } from './utils';

test.describe.configure({ mode: 'serial' });

let page: Page;

test.describe('bulkoptimization', () => {
test.beforeAll(async ({ browser }) => {
page = await browser.newPage();
});

test.beforeEach(async () => {
await clearMediaLibrary(page);
});

test('display upgrade button for account with insufficient credits', async () => {
await setAPIKey(page, 'INSUFFICIENTCREDITS123');
await setCompressionTiming(page, 'auto');
await enableCompressionSizes(page, ['0', 'thumbnail', 'medium']);

await uploadMedia(page, 'input-example.jpg');

await page.goto('/wp-admin/upload.php?page=tiny-bulk-optimization');

await expect(page.getByText('Upgrade account')).toBeVisible();
await expect(page.getByRole('link', { name: 'No thanks, continue anyway' })).toBeVisible();
});

test('not display dismiss link for no credits', async () => {
await setAPIKey(page, 'NOCREDITS123');
await setCompressionTiming(page, 'auto');
await enableCompressionSizes(page, ['0', 'thumbnail', 'medium']);

await uploadMedia(page, 'input-example.jpg');

await page.goto('/wp-admin/upload.php?page=tiny-bulk-optimization');

await expect(page.getByText('Upgrade account')).toBeVisible();
await expect(page.getByRole('link', { name: 'No thanks, continue anyway' })).not.toBeVisible();
});

test('show bulk optimization button after dismissing notice', async () => {
await setAPIKey(page, 'INSUFFICIENTCREDITS123');
await setCompressionTiming(page, 'auto');
await enableCompressionSizes(page, ['0', 'thumbnail', 'medium']);

await uploadMedia(page, 'input-example.jpg');

await page.goto('/wp-admin/upload.php?page=tiny-bulk-optimization');

await page.getByRole('link', { name: 'No thanks, continue anyway' }).click();

await expect(page.getByRole('button', { name: 'Start Bulk Optimization' })).toBeVisible();
});

test('show notice after dismissing notice and refreshing page', async () => {
await setAPIKey(page, 'INSUFFICIENTCREDITS123');
await setCompressionTiming(page, 'auto');
await enableCompressionSizes(page, ['0', 'thumbnail', 'medium']);

await uploadMedia(page, 'input-example.jpg');

await page.goto('/wp-admin/upload.php?page=tiny-bulk-optimization');

await page.getByRole('link', { name: 'No thanks, continue anyway' }).click();

await page.reload();

await expect(page.getByRole('button', { name: 'Start Bulk Optimization' })).not.toBeVisible();
await expect(page.getByRole('link', { name: 'Upgrade account' })).toBeVisible();
await expect(page.getByRole('link', { name: 'No thanks, continue anyway' })).toBeVisible();
});

test('not display upgrade button for paid accounts', async () => {
await setAPIKey(page, 'PAID123');

await page.goto('/wp-admin/upload.php?page=tiny-bulk-optimization');

await expect(page.getByText('Upgrade account')).not.toBeVisible();
});

test('summary should display correct values for empty library', async () => {
await enableCompressionSizes(page, ['0', 'thumbnail', 'medium']);

await page.goto('/wp-admin/upload.php?page=tiny-bulk-optimization');

await expect(page.locator('#uploaded-images')).toHaveText('0');
await expect(page.locator('#optimizable-image-sizes')).toHaveText('0');
await expect(page.locator('#estimated-cost')).toHaveText('$ 0.00');
await expect(page.locator('#optimized-image-sizes')).toHaveText('0');
await expect(page.locator('#unoptimized-library-size')).toHaveText('-');
await expect(page.locator('#optimized-library-size')).toHaveText('-');
await expect(page.locator('#savings-percentage')).toHaveText('0%');
await expect(page.locator('#compression-progress-bar')).toHaveText('0 / 0 (100%)');
});

test('bulk optimize webp images', async () => {
await setAPIKey(page, 'JPG123');
await setCompressionTiming(page, 'auto');

await enableCompressionSizes(page, []);
await uploadMedia(page, 'input-example.jpg');

await enableCompressionSizes(page, ['0']);
await uploadMedia(page, 'input-example.webp');

await enableCompressionSizes(page, ['0', 'thumbnail', 'medium']);
await uploadMedia(page, 'input-example.jpg');

await page.goto('/wp-admin/upload.php?page=tiny-bulk-optimization');

await expect(page.locator('#uploaded-images')).toHaveText('3');
await expect(page.locator('#optimizable-image-sizes')).toHaveText('5');
await expect(page.locator('#optimized-image-sizes')).toHaveText('4');
});

test('summary should display correct values', async () => {
await setAPIKey(page, 'JPG123');
await setCompressionTiming(page, 'auto');

await enableCompressionSizes(page, []);
await uploadMedia(page, 'input-example.jpg');

await enableCompressionSizes(page, ['0']);
await uploadMedia(page, 'input-example.jpg');

await enableCompressionSizes(page, ['0', 'thumbnail', 'medium']);
await uploadMedia(page, 'input-example.jpg');

await page.goto('/wp-admin/upload.php?page=tiny-bulk-optimization');

await expect(page.locator('#uploaded-images')).toHaveText('3');
await expect(page.locator('#optimizable-image-sizes')).toHaveText('5');
await expect(page.locator('#optimized-image-sizes')).toHaveText('4');

await expect(page.locator('#unoptimized-library-size')).toHaveText('2.84 MB');
await expect(page.locator('#optimized-library-size')).toHaveText('2.16 MB');
await expect(page.locator('#savings-percentage')).toHaveText('23.8%');
await expect(page.locator('#compression-progress-bar')).toHaveText('4 / 9 (44%)');
});

test('start bulk optimization should optimize remaining images', async () => {
await setAPIKey(page, 'JPG123');
await setCompressionTiming(page, 'auto');

await enableCompressionSizes(page, []);
await uploadMedia(page, 'input-example.jpg');

await enableCompressionSizes(page, ['0']);
await uploadMedia(page, 'input-example.jpg');

await enableCompressionSizes(page, ['0', 'thumbnail', 'medium']);
await uploadMedia(page, 'input-example.jpg');

await page.goto('/wp-admin/upload.php?page=tiny-bulk-optimization');

await expect(page.locator('#optimizable-image-sizes')).toHaveText('5')
await expect(page.locator('#compression-progress-bar')).toHaveText('4 / 9 (44%)');

await page.getByRole('button', { name: 'Start Bulk Optimization' }).click();

await expect(page.locator('#compression-progress-bar')).toHaveText('9 / 9 (100%)');
});

test('should display tooltips', async () => {
await page.goto('/wp-admin/upload.php?page=tiny-bulk-optimization');
const tooltips = await page.locator('div.tip').all();
await expect(tooltips.length).toEqual(1);
});
});
8 changes: 4 additions & 4 deletions test/integration/compression.spec.ts
Original file line number Diff line number Diff line change
@@ -171,14 +171,14 @@ test.describe('compression', () => {

await page.goto('/wp-admin/upload.php');
await page.getByLabel('“input-example” (Edit)').click();
await page.getByRole('button', { name: 'Compress' }).click();

await page.waitForLoadState('networkidle');

await expect(page.getByText('1 size compressed')).toBeVisible();
await expect(page.getByText('1 size to be compressed')).toBeVisible();

await page.getByRole('button', { name: 'Compress' }).click();
await page.waitForLoadState('networkidle');

await page.getByRole('button', { name: 'Compress' }).click({ force: true });

await expect(page.getByText('2 sizes compressed')).toBeVisible();
});

4 changes: 2 additions & 2 deletions test/integration/utils.ts
Original file line number Diff line number Diff line change
@@ -93,8 +93,8 @@ export async function setOriginalImage(page: Page, settings: OriginalImageSettin

if (settings.resize) {
await page.locator('#tinypng_resize_original_enabled').check({ force: true });
await page.locator('#tinypng_resize_original_width').pressSequentially(`${settings.width}`);
await page.locator('#tinypng_resize_original_height').pressSequentially(`${settings.height}`);
await page.fill('#tinypng_resize_original_width', `${settings.width}`);
await page.fill('#tinypng_resize_original_height', `${settings.height}`);
} else {
await page.locator('#tinypng_resize_original_enabled').uncheck({ force: true });
}