diff --git a/shared/browsers.go b/shared/browsers.go index 0cc8d0e12f..86b3c90308 100644 --- a/shared/browsers.go +++ b/shared/browsers.go @@ -14,7 +14,7 @@ var defaultBrowsers = []string{ // An extra list of known browsers. var extraBrowsers = []string{ - "android_webview", "chrome_android", "chrome_ios", "chromium", "deno", "epiphany", "firefox_android", "flow", "node.js", "servo", "uc", "wktr", "webkitgtk", + "android_webview", "chrome_android", "chrome_ios", "chromium", "deno", "epiphany", "firefox_android", "flow", "ladybird", "node.js", "servo", "uc", "wktr", "webkitgtk", } var allBrowsers mapset.Set diff --git a/shared/browsers_test.go b/shared/browsers_test.go index d74fb1b48c..cd45d13741 100644 --- a/shared/browsers_test.go +++ b/shared/browsers_test.go @@ -27,6 +27,7 @@ func TestGetDefaultBrowserNames(t *testing.T) { assert.NotEqual(t, "epiphany", n) assert.NotEqual(t, "firefox_android", n) assert.NotEqual(t, "flow", n) + assert.NotEqual(t, "ladybird", n) assert.NotEqual(t, "node.js", n) assert.NotEqual(t, "servo", n) assert.NotEqual(t, "wktr", n) @@ -43,6 +44,7 @@ func TestIsBrowserName(t *testing.T) { assert.True(t, IsBrowserName("firefox")) assert.True(t, IsBrowserName("firefox_android")) assert.True(t, IsBrowserName("flow")) + assert.True(t, IsBrowserName("ladybird")) assert.True(t, IsBrowserName("node.js")) assert.True(t, IsBrowserName("safari")) assert.True(t, IsBrowserName("chrome_android")) diff --git a/shared/product_spec.go b/shared/product_spec.go index 530f3849fc..ee8abe3e2d 100644 --- a/shared/product_spec.go +++ b/shared/product_spec.go @@ -90,6 +90,8 @@ func (p ProductSpec) DisplayName() string { return "Firefox Android" case "flow": return "Flow" + case "ladybird": + return "Ladybird" case "node.js": return "Node.js" case "safari": diff --git a/webapp/components/product-info.js b/webapp/components/product-info.js index 1693aa0c62..dbd012b431 100644 --- a/webapp/components/product-info.js +++ b/webapp/components/product-info.js @@ -16,6 +16,7 @@ const DisplayNames = (() => { m.set('deno', 'Deno'); m.set('firefox_android', 'Firefox Android'); m.set('flow', 'Flow'); + m.set('ladybird', 'Ladybird'); m.set('node.js', 'Node.js'); m.set('servo', 'Servo'); m.set('uc', 'UC Browser'); @@ -48,7 +49,7 @@ const versionPatterns = Object.freeze({ // The set of all browsers known to the wpt.fyi UI. const AllBrowserNames = Object.freeze(['android_webview', 'chrome_android', 'chrome_ios', 'chrome', - 'chromium', 'deno', 'edge', 'firefox_android', 'firefox', 'flow', 'node.js', 'safari', 'servo', 'webkitgtk', 'wktr']); + 'chromium', 'deno', 'edge', 'firefox_android', 'firefox', 'flow', 'ladybird', 'node.js', 'safari', 'servo', 'webkitgtk', 'wktr']); // The list of default browsers used in cases where the user has not otherwise // chosen a set of browsers (e.g. which browsers to show runs for). Stored as @@ -181,7 +182,7 @@ const ProductInfo = (superClass) => class extends superClass { // although it would be better to have some variant of the Firefox logo. return '/static/geckoview_64x64.png'; - } else if (name !== 'chromium' && name !== 'deno' && name !== 'flow' && name !== 'node.js' && name !== 'servo' && name !== 'wktr') { // Products without per-channel logos. + } else if (name !== 'chromium' && name !== 'deno' && name !== 'flow' && name !== 'ladybird' && name !== 'node.js' && name !== 'servo' && name !== 'wktr') { // Products without per-channel logos. let channel; const candidates = ['beta', 'dev', 'canary', 'nightly', 'preview']; for (const label of candidates) { diff --git a/webapp/components/test/wpt-amend-metadata.html b/webapp/components/test/wpt-amend-metadata.html index eaccf4d2db..a8df2d544d 100644 --- a/webapp/components/test/wpt-amend-metadata.html +++ b/webapp/components/test/wpt-amend-metadata.html @@ -165,6 +165,7 @@ expect(appFixture.getSearchURL('/a/b.html', 'wktr')).to.equal('https://bugs.webkit.org/buglist.cgi?quicksearch="/a/b"'); expect(appFixture.getSearchURL('/a/b.html', 'webkitgtk')).to.equal('https://bugs.webkit.org/buglist.cgi?quicksearch="/a/b"'); expect(appFixture.getSearchURL('/a/b.html', 'servo')).to.equal('https://github.com/servo/servo/issues?q="/a/b"'); + expect(appFixture.getSearchURL('/a/b.html', 'ladybird')).to.equal('https://github.com/LadybirdBrowser/ladybird/issues?q="/a/b"'); }); test('hasFileIssueURL', () => { expect(appFixture.hasFileIssueURL('')).to.be.true; diff --git a/webapp/components/wpt-amend-metadata.js b/webapp/components/wpt-amend-metadata.js index d7ee8bca01..3e93896acb 100644 --- a/webapp/components/wpt-amend-metadata.js +++ b/webapp/components/wpt-amend-metadata.js @@ -298,6 +298,7 @@ class AmendMetadata extends LoadingState(PathInfo(ProductInfo(PolymerElement))) 'deno', 'edge', 'firefox', + 'ladybird', 'node.js', 'safari', 'servo', @@ -326,6 +327,10 @@ class AmendMetadata extends LoadingState(PathInfo(ProductInfo(PolymerElement))) return `https://bugzilla.mozilla.org/buglist.cgi?quicksearch="${testName}"`; } + if (product === 'ladybird') { + return `https://github.com/LadybirdBrowser/ladybird/issues?q="${testName}"`; + } + if (product === 'node.js') { return `https://github.com/nodejs/node/issues?q="${testName}"`; } diff --git a/webapp/static/ladybird_64x64.png b/webapp/static/ladybird_64x64.png new file mode 100644 index 0000000000..ad0826f2e6 Binary files /dev/null and b/webapp/static/ladybird_64x64.png differ