From 8bdd447892483c586489515956c97afac1876cb0 Mon Sep 17 00:00:00 2001 From: Andreas Stassivik Date: Thu, 10 Oct 2024 14:26:50 -0700 Subject: [PATCH 1/7] prefer `Record` type utility --- src/tutorial/custom-marker-icons/custom-marker-icons.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tutorial/custom-marker-icons/custom-marker-icons.test.ts b/src/tutorial/custom-marker-icons/custom-marker-icons.test.ts index 20ad502..c5b5da9 100644 --- a/src/tutorial/custom-marker-icons/custom-marker-icons.test.ts +++ b/src/tutorial/custom-marker-icons/custom-marker-icons.test.ts @@ -45,7 +45,7 @@ describe('custom-marker-icons tutorial', (): void => { }, ])( 'src="$src"', - ({ popupText, src }: { popupText: string; src: string }): void => { + ({ popupText, src }: Record<'popupText' | 'src', string>): void => { it(`should display popup text "${popupText}"`, async (): Promise => { await (await page.$(`img[src="${src}"]`))?.click() From f64bd73d7eb97eb8e180d8c472057d339cf05df2 Mon Sep 17 00:00:00 2001 From: Andreas Stassivik Date: Thu, 10 Oct 2024 14:33:27 -0700 Subject: [PATCH 2/7] accessible interactive tutorial end-to-end test --- src/tutorial/accessible/interactive.test.ts | 55 +++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 src/tutorial/accessible/interactive.test.ts diff --git a/src/tutorial/accessible/interactive.test.ts b/src/tutorial/accessible/interactive.test.ts new file mode 100644 index 0000000..efe382b --- /dev/null +++ b/src/tutorial/accessible/interactive.test.ts @@ -0,0 +1,55 @@ +describe('accessible interactive tutorial', (): void => { + beforeAll(async (): Promise => { + await page.goto('http://localhost:3001/tutorial/accessible/interactive') + }) + + describe('map', (): void => { + describe('on initial page load', (): void => { + // eslint-disable-next-line jest/prefer-lowercase-title -- official case + describe('OpenStreetMap tiles', (): void => { + it('should render', async (): Promise => { + ;( + await page.$$eval( + '.leaflet-tile-loaded', + (tiles: Element[]): (string | null)[] => + tiles.map((tile: Element): string | null => + tile.getAttribute('src'), + ), + ) + ).forEach((source: string | null): void => { + expect(source).toMatch(/^https:\/\/tile\.openstreetmap\.org\//) + }) + }) + }) + }) + + describe('"Tab"-focused marker when "Enter" is pressed', (): void => { + it('should display popup text "Kyiv, Ukraine is the birthplace of Leaflet!"', async (): Promise => { + let markerFocused = false + + while (!markerFocused) { + await page.keyboard.press('Tab') + + if ( + ( + await page.evaluate( + (): string => document.activeElement?.className ?? '', + ) + ).includes('leaflet-marker-icon') + ) { + markerFocused = true + } + } + + await page.keyboard.press('Enter') + + expect( + await page.$eval( + '.leaflet-popup-content', + ({ textContent }: Element): string | null => textContent, + ), + ).toBe('Kyiv, Ukraine is the birthplace of Leaflet!') + }) + }) + }) +}) From fe511260cf0fb0b6ed20ea720b427ab04c9609de Mon Sep 17 00:00:00 2001 From: Andreas Stassivik Date: Thu, 10 Oct 2024 14:39:02 -0700 Subject: [PATCH 3/7] inline types --- .../custom-marker-icons.test.ts | 14 +++++--------- src/tutorial/mobile/mobile.test.ts | 12 +++++------- src/tutorial/quick-start/quick-start.test.ts | 16 +++++++--------- 3 files changed, 17 insertions(+), 25 deletions(-) diff --git a/src/tutorial/custom-marker-icons/custom-marker-icons.test.ts b/src/tutorial/custom-marker-icons/custom-marker-icons.test.ts index c5b5da9..79c0f65 100644 --- a/src/tutorial/custom-marker-icons/custom-marker-icons.test.ts +++ b/src/tutorial/custom-marker-icons/custom-marker-icons.test.ts @@ -1,5 +1,3 @@ -type SourceCustomMarkerIcons = string | null - describe('custom-marker-icons tutorial', (): void => { beforeAll(async (): Promise => { await page.goto( @@ -15,13 +13,12 @@ describe('custom-marker-icons tutorial', (): void => { ;( await page.$$eval( '.leaflet-tile-loaded', - (tiles: Element[]): SourceCustomMarkerIcons[] => - tiles.map( - (tile: Element): SourceCustomMarkerIcons => - tile.getAttribute('src'), + (tiles: Element[]): (string | null)[] => + tiles.map((tile: Element): string | null => + tile.getAttribute('src'), ), ) - ).forEach((source: SourceCustomMarkerIcons): void => { + ).forEach((source: string | null): void => { expect(source).toMatch(/^https:\/\/tile\.openstreetmap\.org\//) }) }) @@ -60,8 +57,7 @@ describe('custom-marker-icons tutorial', (): void => { expect( await page.$eval( '.leaflet-popup-content', - ({ textContent }: Element): SourceCustomMarkerIcons => - textContent, + ({ textContent }: Element): string | null => textContent, ), ).toBe(popupText) }) diff --git a/src/tutorial/mobile/mobile.test.ts b/src/tutorial/mobile/mobile.test.ts index 36704fa..5b6de4b 100644 --- a/src/tutorial/mobile/mobile.test.ts +++ b/src/tutorial/mobile/mobile.test.ts @@ -1,5 +1,3 @@ -type SourceMobile = string | null - describe('mobile tutorial', (): void => { beforeAll(async (): Promise => { await browser @@ -22,12 +20,12 @@ describe('mobile tutorial', (): void => { ;( await page.$$eval( '.leaflet-tile-loaded', - (tiles: Element[]): SourceMobile[] => - tiles.map( - (tile: Element): SourceMobile => tile.getAttribute('src'), + (tiles: Element[]): (string | null)[] => + tiles.map((tile: Element): string | null => + tile.getAttribute('src'), ), ) - ).forEach((source: SourceMobile): void => { + ).forEach((source: string | null): void => { expect(source).toMatch(/^https:\/\/tile\.openstreetmap\.org\//) }) }) @@ -51,7 +49,7 @@ describe('mobile tutorial', (): void => { expect( await page.$eval( '.leaflet-popup-content', - ({ textContent }: Element): SourceMobile => textContent, + ({ textContent }: Element): string | null => textContent, ), ).toBe('You are within 10 meters from this point.') }) diff --git a/src/tutorial/quick-start/quick-start.test.ts b/src/tutorial/quick-start/quick-start.test.ts index f7fa0b9..901e1fb 100644 --- a/src/tutorial/quick-start/quick-start.test.ts +++ b/src/tutorial/quick-start/quick-start.test.ts @@ -1,7 +1,5 @@ import { type BoundingBox } from 'puppeteer' -type SourceQuickstart = string | null - describe('quick-start tutorial', (): void => { beforeAll(async (): Promise => { await page.goto('http://localhost:3001/tutorial/quick-start/quick-start') @@ -15,12 +13,12 @@ describe('quick-start tutorial', (): void => { ;( await page.$$eval( '.leaflet-tile-loaded', - (tiles: Element[]): SourceQuickstart[] => - tiles.map( - (tile: Element): SourceQuickstart => tile.getAttribute('src'), + (tiles: Element[]): (string | null)[] => + tiles.map((tile: Element): string | null => + tile.getAttribute('src'), ), ) - ).forEach((source: SourceQuickstart): void => { + ).forEach((source: string | null): void => { expect(source).toMatch(/^https:\/\/tile\.openstreetmap\.org\//) }) }) @@ -31,7 +29,7 @@ describe('quick-start tutorial', (): void => { expect( await page.$eval( '.leaflet-popup-content', - ({ textContent }: Element): SourceQuickstart => textContent, + ({ textContent }: Element): string | null => textContent, ), ).toBe('I am a standalone popup.') }) @@ -58,7 +56,7 @@ describe('quick-start tutorial', (): void => { expect( await page.$eval( '.leaflet-popup-content', - ({ textContent }: Element): SourceQuickstart => textContent, + ({ textContent }: Element): string | null => textContent, ), ).toMatch(/^You clicked the map at LatLng\(.+\)$/) }) @@ -107,7 +105,7 @@ describe('quick-start tutorial', (): void => { expect( await page.$eval( '.leaflet-popup-content', - ({ textContent }: Element): SourceQuickstart => textContent, + ({ textContent }: Element): string | null => textContent, ), ).toBe(popupText) }) From 04e3e454e04935fe6d7c68dd412b35a90d22fcb9 Mon Sep 17 00:00:00 2001 From: Andreas Stassivik Date: Thu, 10 Oct 2024 15:42:39 -0700 Subject: [PATCH 4/7] npm install `@babel/eslint-parser@^7.25.8` as devDependency --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index c29ad28..db7d9b3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -25,7 +25,7 @@ "serve": "^14.2.3" }, "devDependencies": { - "@babel/eslint-parser": "^7.25.7", + "@babel/eslint-parser": "^7.25.8", "@babel/plugin-syntax-import-attributes": "^7.25.7", "@rollup/plugin-commonjs": "^28.0.0", "@rollup/plugin-inject": "^5.0.5", @@ -134,9 +134,9 @@ } }, "node_modules/@babel/eslint-parser": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.25.7.tgz", - "integrity": "sha512-B+BO9x86VYsQHimucBAL1fxTJKF4wyKY6ZVzee9QgzdZOUfs3BaR6AQrgoGrRI+7IFS1wUz/VyQ+SoBcSpdPbw==", + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.25.8.tgz", + "integrity": "sha512-Po3VLMN7fJtv0nsOjBDSbO1J71UhzShE9MuOSkWEV9IZQXzhZklYtzKZ8ZD/Ij3a0JBv1AG3Ny2L3jvAHQVOGg==", "dev": true, "license": "MIT", "dependencies": { diff --git a/package.json b/package.json index 80a6f1c..29f55f3 100644 --- a/package.json +++ b/package.json @@ -61,7 +61,7 @@ "serve": "^14.2.3" }, "devDependencies": { - "@babel/eslint-parser": "^7.25.7", + "@babel/eslint-parser": "^7.25.8", "@babel/plugin-syntax-import-attributes": "^7.25.7", "@rollup/plugin-commonjs": "^28.0.0", "@rollup/plugin-inject": "^5.0.5", From 82660b645bc69d08d0dd806ff5592ee82429679e Mon Sep 17 00:00:00 2001 From: Andreas Stassivik Date: Thu, 10 Oct 2024 15:46:33 -0700 Subject: [PATCH 5/7] npm install `devDependencies`: - expect-puppeteer@^10.1.2 - jest-environment-puppeteer@^10.1.2 - jest-puppeteer@^10.1.2 --- package-lock.json | 28 ++++++++++++++-------------- package.json | 6 +++--- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/package-lock.json b/package-lock.json index db7d9b3..69896ca 100644 --- a/package-lock.json +++ b/package-lock.json @@ -47,10 +47,10 @@ "eslint-plugin-jsonc": "^2.16.0", "eslint-plugin-no-unsanitized": "^4.1.2", "eslint-plugin-prettier": "^5.2.1", - "expect-puppeteer": "^10.1.1", + "expect-puppeteer": "^10.1.2", "jest": "^29.7.0", - "jest-environment-puppeteer": "^10.1.1", - "jest-puppeteer": "^10.1.1", + "jest-environment-puppeteer": "^10.1.2", + "jest-puppeteer": "^10.1.2", "prettier": "3.3.3", "puppeteer": "^23.5.1", "rollup": "^4.24.0", @@ -6507,9 +6507,9 @@ } }, "node_modules/expect-puppeteer": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/expect-puppeteer/-/expect-puppeteer-10.1.1.tgz", - "integrity": "sha512-tbK/lItqbLn5ZmM/eXP5OYGmR/yYiJVCc8VYZdhRztyaeiTb+M9+j3pU9TauX7kFbJtpX0dgEgrSSUlqaOqU5g==", + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/expect-puppeteer/-/expect-puppeteer-10.1.2.tgz", + "integrity": "sha512-hngh53yz5e0lw1BvkG6ealeyZQkeaLqWFO31tOFBA0tH3x+0nEjQfnjv5P3CC6KwWwG5mDC1xBDSX0YpW9wBrw==", "dev": true, "license": "MIT", "engines": { @@ -9428,9 +9428,9 @@ } }, "node_modules/jest-environment-puppeteer": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/jest-environment-puppeteer/-/jest-environment-puppeteer-10.1.1.tgz", - "integrity": "sha512-xg+94eL4LeJ3rFLtF9TCIvs3xbx0IJ3W4HEEpaZdkszZt1PbOosqOwbkLEtCeBXePwPproag7nLQz3/vfmp1Qw==", + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/jest-environment-puppeteer/-/jest-environment-puppeteer-10.1.2.tgz", + "integrity": "sha512-J74V1MfNbtanLIK/gOCy3GwEUae55uCIdCdUXxPhySBen9qWqmbZygjWA0TOPwf0DoJTD66lD50qtX4skLHP/g==", "dev": true, "license": "MIT", "dependencies": { @@ -9811,14 +9811,14 @@ } }, "node_modules/jest-puppeteer": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/jest-puppeteer/-/jest-puppeteer-10.1.1.tgz", - "integrity": "sha512-iXY/ZqSOkeF6ntKU2pvQw+Zj6WNPkJVNOGNy+DeVaWPQJLbBeRo89BtDWtYXzGoN8ilvYUChQlvaEdGVbEYX4g==", + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/jest-puppeteer/-/jest-puppeteer-10.1.2.tgz", + "integrity": "sha512-wPXShMyEPPyXpvly/0rqnf7+E4yPKdG1EBOY73g0TgLx6rMK8NT8Cr+HbhhLPkvzJcYoh6IzvHFIFfGTIUXxoA==", "dev": true, "license": "MIT", "dependencies": { - "expect-puppeteer": "^10.1.1", - "jest-environment-puppeteer": "^10.1.1" + "expect-puppeteer": "^10.1.2", + "jest-environment-puppeteer": "^10.1.2" }, "engines": { "node": ">=16" diff --git a/package.json b/package.json index 29f55f3..96bf90a 100644 --- a/package.json +++ b/package.json @@ -83,10 +83,10 @@ "eslint-plugin-jsonc": "^2.16.0", "eslint-plugin-no-unsanitized": "^4.1.2", "eslint-plugin-prettier": "^5.2.1", - "expect-puppeteer": "^10.1.1", + "expect-puppeteer": "^10.1.2", "jest": "^29.7.0", - "jest-environment-puppeteer": "^10.1.1", - "jest-puppeteer": "^10.1.1", + "jest-environment-puppeteer": "^10.1.2", + "jest-puppeteer": "^10.1.2", "prettier": "3.3.3", "puppeteer": "^23.5.1", "rollup": "^4.24.0", From eff345a7d461e0ebe20e738ac150f4280865f18a Mon Sep 17 00:00:00 2001 From: Andreas Stassivik Date: Thu, 10 Oct 2024 15:51:37 -0700 Subject: [PATCH 6/7] npm install `puppeteer@^23.5.2` as devDependency --- package-lock.json | 16 ++++++++-------- package.json | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index 69896ca..a317d01 100644 --- a/package-lock.json +++ b/package-lock.json @@ -52,7 +52,7 @@ "jest-environment-puppeteer": "^10.1.2", "jest-puppeteer": "^10.1.2", "prettier": "3.3.3", - "puppeteer": "^23.5.1", + "puppeteer": "^23.5.2", "rollup": "^4.24.0", "rollup-plugin-modify": "^3.0.0", "shx": "^0.3.4", @@ -11981,9 +11981,9 @@ "license": "MIT" }, "node_modules/puppeteer": { - "version": "23.5.1", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-23.5.1.tgz", - "integrity": "sha512-9WUnrCx7nB/GEMbJdKiSSU6G4t6Nzn39BBochWYyhK2wWxKwibZDwEF71AUP9D17Byn6OoPifsXhyvnqN/D4mQ==", + "version": "23.5.2", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-23.5.2.tgz", + "integrity": "sha512-7OOGEIoCjGP9lQ6QHvRSBTO3VRDPvu+YGl6rLCKOfYNMp1Lqc1U+s3lS1JdyR+jee1pZ55sxf+TEKsmqOopO1A==", "dev": true, "hasInstallScript": true, "license": "Apache-2.0", @@ -11992,7 +11992,7 @@ "chromium-bidi": "0.8.0", "cosmiconfig": "^9.0.0", "devtools-protocol": "0.0.1342118", - "puppeteer-core": "23.5.1", + "puppeteer-core": "23.5.2", "typed-query-selector": "^2.12.0" }, "bin": { @@ -12003,9 +12003,9 @@ } }, "node_modules/puppeteer-core": { - "version": "23.5.1", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-23.5.1.tgz", - "integrity": "sha512-We6xKCSZaZ23+GAYckeNfeDeJIVuhxOBsh/gZkbULu/XLFJ3umSiiQ8Ey927h3g/XrCCr8CnSZ5fvP5v2vB5Yw==", + "version": "23.5.2", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-23.5.2.tgz", + "integrity": "sha512-UwPAX29EID8lJmxeL7JT3Gz35D1BHn5o9ZXpBLoR24W7gtUg1dLx7OUPsUTR5Tlxf+1Yeqw9W3qP4uqWThqXgg==", "dev": true, "license": "Apache-2.0", "dependencies": { diff --git a/package.json b/package.json index 96bf90a..d739de7 100644 --- a/package.json +++ b/package.json @@ -88,7 +88,7 @@ "jest-environment-puppeteer": "^10.1.2", "jest-puppeteer": "^10.1.2", "prettier": "3.3.3", - "puppeteer": "^23.5.1", + "puppeteer": "^23.5.2", "rollup": "^4.24.0", "rollup-plugin-modify": "^3.0.0", "shx": "^0.3.4", From 1b3a4a98c29b42424146698c8888f4e7b2587af0 Mon Sep 17 00:00:00 2001 From: Andreas Stassivik Date: Thu, 10 Oct 2024 15:55:51 -0700 Subject: [PATCH 7/7] 0.0.55 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index a317d01..1040777 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@stassi/leaf", - "version": "0.0.54", + "version": "0.0.55", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@stassi/leaf", - "version": "0.0.54", + "version": "0.0.55", "cpu": [ "arm64", "x64" diff --git a/package.json b/package.json index d739de7..5dc358f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@stassi/leaf", - "version": "0.0.54", + "version": "0.0.55", "description": "Leaflet adapter.", "keywords": [ "cartography",