Skip to content

Commit

Permalink
Run WPTs against browserslist
Browse files Browse the repository at this point in the history
  • Loading branch information
jerivas committed Dec 16, 2022
1 parent f231231 commit a64006c
Show file tree
Hide file tree
Showing 3 changed files with 75 additions and 103 deletions.
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,7 @@
"@typescript-eslint/parser": "^5.46.0",
"@vitest/coverage-istanbul": "^0.25.7",
"async": "^3.2.4",
"browserslist": "^4.21.4",
"browserstack-local": "^1.5.1",
"cross-env": "^7.0.3",
"eslint": "^8.29.0",
Expand Down
174 changes: 72 additions & 102 deletions tests/wpt.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
*/

import { eachLimit, retry } from 'async';
import browserslist from 'browserslist';
import { Local } from 'browserstack-local';
import fs from 'fs';
import { readFile } from 'fs/promises';
Expand Down Expand Up @@ -107,51 +108,52 @@ const SUBTEST_FILTERS: Array<RegExp> = [
// /ch relative/,
];

function getBrowserVersions(query: string | string[]) {
return browserslist(query).map((browserString) => {
const [name, version] = browserString.split(' ');
return {
name,
version:
!version.includes('.') && !isNaN(parseFloat(version))
? `${version}.0`
: version,
};
});
}

const CHROME_DEFINITION: BrowserDefinition = {
name: 'Chrome',
logo: 'https://unpkg.com/@browser-logos/chrome@2.0.0/chrome.svg',
versions: Array.from({ length: 2 })
.map((_, i) => 103 + i)
.filter((version) => ![82].includes(version))
.map((version) => `${version}.0`)
.map((browserVersion) => ({
name: browserVersion,
data: {
type: DataType.FetchDescriptor,
capabilities: {
'bstack:options': {
os: 'OS X',
osVersion: 'Monterey',
},
browserName: 'Chrome',
browserVersion: browserVersion,
versions: getBrowserVersions('last 2 Chrome versions').map(({ version }) => ({
name: version,
data: {
type: DataType.FetchDescriptor,
capabilities: {
'bstack:options': {
os: 'Windows',
osVersion: '11',
},
browserName: 'Chrome',
browserVersion: version,
},
})),
},
})),
};

// Safari on iOS requires specific OS/browser pairs, so we can't use browserslist
const SAFARI_IOS_DEFINITION: BrowserDefinition = {
name: 'Safari (iOS)',
logo: 'https://unpkg.com/@browser-logos/safari-ios@1.0.15/safari-ios.svg',
versions: (
[
// ['13.7', '13.7'],
// ['14.0', '14'],
// ['14.1', '14'],
// ['15.0', '15'],
// ['15.2', '15'],
// ['15.4', '15'],
['15.5', '15'],
['15.6', '15'],
] as Array<[string, string]>
).map(([browserVersion, osVersion]) => ({
versions: [
['iPhone 14', '16'],
['iPhone 13', '15'],
].map(([deviceName, browserVersion]) => ({
name: browserVersion,
data: {
type: DataType.FetchDescriptor,
capabilities: {
'bstack:options': {
deviceName: 'iPhone 11',
osVersion,
deviceName,
},
browserName: 'safari',
browserVersion,
Expand All @@ -160,16 +162,14 @@ const SAFARI_IOS_DEFINITION: BrowserDefinition = {
})),
};

// Safari on macOS requires specific OS/browser pairs, so we can't use browserslist
const SAFARI_MACOS_DEFINITION: BrowserDefinition = {
name: 'Safari (macOS)',
logo: 'https://unpkg.com/@browser-logos/safari-ios@1.0.15/safari-ios.svg',
versions: (
[
// ['13.1', 'Catalina'],
['14.1', 'Big Sur'],
['15.3', 'Monterey'],
] as Array<[string, string]>
).map(([browserVersion, osVersion]) => ({
versions: [
['Ventura', '16'],
['Monterey', '15.6'],
].map(([osVersion, browserVersion]) => ({
name: browserVersion,
data: {
type: DataType.FetchDescriptor,
Expand All @@ -188,86 +188,62 @@ const SAFARI_MACOS_DEFINITION: BrowserDefinition = {
const EDGE_DEFINITION: BrowserDefinition = {
name: 'Edge',
logo: 'https://unpkg.com/@browser-logos/edge@2.0.5/edge.svg',
versions: Array.from({ length: 2 })
.map((_, i) => 102 + i)
.filter((version) => ![82].includes(version))
.map((version) => `${version}.0`)
.map((browserVersion) => ({
name: browserVersion,
data: {
type: DataType.FetchDescriptor,
capabilities: {
'bstack:options': {
os: 'OS X',
osVersion: 'Monterey',
},
browserName: 'Edge',
browserVersion,
versions: getBrowserVersions('last 2 Edge versions').map(({ version }) => ({
name: version,
data: {
type: DataType.FetchDescriptor,
capabilities: {
'bstack:options': {
os: 'Windows',
osVersion: '11',
},
browserName: 'Edge',
browserVersion: version,
},
})),
},
})),
};

const FIREFOX_DEFINITION: BrowserDefinition = {
name: 'Firefox',
logo: 'https://unpkg.com/@browser-logos/firefox@3.0.9/firefox.svg',
versions: Array.from({ length: 2 })
.map((_, i) => 103 + i)
.map((version) => `${version}.0`)
.map((browserVersion) => ({
name: browserVersion,
versions: getBrowserVersions('last 2 Firefox versions').map(
({ version }) => ({
name: version,
data: {
type: DataType.FetchDescriptor,
capabilities: {
'bstack:options': {
os: 'OS X',
osVersion: 'Monterey',
os: 'Windows',
osVersion: '11',
},
browserName: 'Firefox',
browserVersion,
browserVersion: version,
},
},
})),
}),
),
};

const SAMSUNG_INTERNET_DEFINITION: BrowserDefinition = {
name: 'Samsung Internet',
name: 'Samsung',
logo: 'https://unpkg.com/@browser-logos/samsung-internet@4.0.6/samsung-internet.svg',
versions: [
// '9.2',
// '10.1',
// '11.2',
// '12.0',
// '13.0',
// '14.0',
// '15.0',
// '16.0',
// '17.0',
].map((browserVersion) => ({
name: browserVersion,
data: {
type: DataType.FetchDescriptor,
capabilities: {
'bstack:options': {
osVersion: '12.0',
deviceName: 'Samsung Galaxy S22 Ultra',
versions: getBrowserVersions('last 2 Samsung versions').map(
({ version }) => ({
name: version,
data: {
type: DataType.FetchDescriptor,
capabilities: {
'bstack:options': {
osVersion: '12.0',
deviceName: 'Samsung Galaxy S22 Ultra',
},
browserName: 'samsung',
browserVersion: version,
},
browserName: 'samsung',
browserVersion,
},
},
})),
};

const IE_DEFINITION: BrowserDefinition = {
name: 'Internet Explorer',
logo: 'https://unpkg.com/@browser-logos/internet-explorer_9-11@1.1.16/internet-explorer_9-11.svg',
versions: [
/*'9', '10', '11'*/
].map((browserVersion) => ({
name: browserVersion,
data: { type: DataType.Result, summary: [0, 0] },
})),
}),
),
};

const BROWSERS: BrowserDefinition[] = [
Expand All @@ -277,7 +253,6 @@ const BROWSERS: BrowserDefinition[] = [
EDGE_DEFINITION,
FIREFOX_DEFINITION,
SAMSUNG_INTERNET_DEFINITION,
IE_DEFINITION,
];

function createLocalServer(): Promise<Local> {
Expand Down Expand Up @@ -345,11 +320,6 @@ async function getTests(manifestPath: string): Promise<TestSuite> {
(name) => `http://web-platform.test:8000/${folder_path}/${name}`,
),
);
// Object.keys(htmlTests).forEach((name) => {
// const match = !TEST_FILTERS.some((filter) => filter.test(name));
// if (match)
// js.push(`http://web-platform.test:8000/${folder_path}/${name}`);
// });
}
}

Expand Down
3 changes: 2 additions & 1 deletion yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -617,6 +617,7 @@ __metadata:
"@typescript-eslint/parser": ^5.46.0
"@vitest/coverage-istanbul": ^0.25.7
async: ^3.2.4
browserslist: ^4.21.4
browserstack-local: ^1.5.1
cross-env: ^7.0.3
css-tree: ^2.3.0
Expand Down Expand Up @@ -1205,7 +1206,7 @@ __metadata:
languageName: node
linkType: hard

"browserslist@npm:^4.21.3":
"browserslist@npm:^4.21.3, browserslist@npm:^4.21.4":
version: 4.21.4
resolution: "browserslist@npm:4.21.4"
dependencies:
Expand Down

0 comments on commit a64006c

Please sign in to comment.