From 2c6aacd1fd1c6563a48a8dc3507fa51acf68605d Mon Sep 17 00:00:00 2001 From: miles-grant-ibigroup <miles.grant@ibigroup.com> Date: Tue, 29 Aug 2023 16:19:20 -0400 Subject: [PATCH 01/13] fix(batch ui): OTP2 fare support --- lib/components/narrative/default/default-itinerary.js | 8 ++++---- lib/util/state.js | 6 ++++-- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/lib/components/narrative/default/default-itinerary.js b/lib/components/narrative/default/default-itinerary.js index f7f98e49c..bfbf25518 100644 --- a/lib/components/narrative/default/default-itinerary.js +++ b/lib/components/narrative/default/default-itinerary.js @@ -20,8 +20,8 @@ import { getAccessibilityScoreForItinerary, itineraryHasAccessibilityScores } from '../../../util/accessibility-routing' +import { getFare, getTotalFare } from '../../../util/state' import { getFirstLegStartTime } from '../../../util/itinerary' -import { getTotalFare } from '../../../util/state' import { Icon, StyledIconWrapperTextAlign } from '../../util/styledIcon' import { localizeGradationMap } from '../utils' import FieldTripGroupSize from '../../admin/field-trip-itinerary-group-size' @@ -121,7 +121,7 @@ const ITINERARY_ATTRIBUTES = [ id: 'cost', order: 2, render: (itinerary, options, defaultFareType) => { - const fare = getTotalFare(itinerary, options.configCosts, defaultFareType) + const fare = getFare(itinerary, defaultFareType) const currency = getItineraryCost( itinerary.legs, defaultFareType.mediumId, @@ -142,11 +142,11 @@ const ITINERARY_ATTRIBUTES = [ return ( <FormattedNumber // Currency from itinerary fare or from config. - currency={currency.code} + currency={fare.fareCurrency} currencyDisplay="narrowSymbol" // eslint-disable-next-line react/style-prop-object style="currency" - value={fare} + value={fare.transitFare + fare.maxTNCFare} /> ) } diff --git a/lib/util/state.js b/lib/util/state.js index 1d2f35f15..c25b0b615 100644 --- a/lib/util/state.js +++ b/lib/util/state.js @@ -99,8 +99,10 @@ export function getTotalFare( let drivingCost = 0 let hasBikeshare = false let transitFareNotProvided = false + let rideHailTrip = false itinerary.legs.forEach((leg) => { - if (leg.mode === 'CAR') { + rideHailTrip = rideHailTrip || leg?.rideHailingEstimate + if (leg.mode === 'CAR' && !rideHailTrip) { // Convert meters to miles and multiple by cost per mile. drivingCost += leg.distance * 0.000621371 * costs.drivingCentsPerMile } @@ -121,7 +123,7 @@ export function getTotalFare( if (transitFareNotProvided) return null const bikeshareCost = hasBikeshare ? costs.bikeshareTripCostCents : 0 // If some leg uses driving, add parking cost to the total. - if (drivingCost > 0) drivingCost += costs.carParkingCostCents + if (drivingCost > 0 && !rideHailTrip) drivingCost += costs.carParkingCostCents return bikeshareCost + drivingCost + transitFare + maxTNCFare * 100 } From dc40b6eee60f212327afdedca7af652cf8493d32 Mon Sep 17 00:00:00 2001 From: binh-dam-ibigroup <56846598+binh-dam-ibigroup@users.noreply.github.com> Date: Thu, 7 Sep 2023 17:36:52 -0400 Subject: [PATCH 02/13] ci(percy): Use sep key for calltaker, take mobile snaps in non-calltaker test. --- .github/workflows/percy.yml | 14 +++--- percy/percy.test.js | 85 +++++++++++++++++++------------------ 2 files changed, 48 insertions(+), 51 deletions(-) diff --git a/.github/workflows/percy.yml b/.github/workflows/percy.yml index ae53907d2..957eafc81 100644 --- a/.github/workflows/percy.yml +++ b/.github/workflows/percy.yml @@ -32,18 +32,13 @@ jobs: env: YAML_CONFIG: /tmp/otp2config.yml JS_CONFIG: ./percy/har-mock-config.js - - name: Take Percy Snapshots (Desktop) + - name: Take Percy Snapshots (Desktop + Mobile) run: npx percy exec -- npx jest percy/percy.test.js --force-exit env: PERCY_TOKEN: ${{ secrets.PERCY_TOKEN_OTP2 }} - OTP_RR_UI_MODE: desktop - - name: Take Percy Snapshots (Mobile) - run: npx percy exec -- npx jest percy/percy.test.js --force-exit - env: - PERCY_TOKEN: ${{ secrets.PERCY_TOKEN_OTP2 }} - OTP_RR_UI_MODE: mobile - # Calltaker has a separate config file, so another build should be produced. + OTP_RR_UI_MODE: normal - name: Build OTP-RR Calltaker + # Calltaker has a separate config file, so another build should be produced. run: yarn build env: YAML_CONFIG: /tmp/otp2config.yml @@ -51,5 +46,6 @@ jobs: - name: Take Percy Snapshots (Calltaker) run: npx percy exec -- npx jest percy/percy.test.js --force-exit env: - PERCY_TOKEN: ${{ secrets.PERCY_TOKEN_OTP2 }} + # Calltaker has a separate key because the calltaker-specific snapshots are different. + PERCY_TOKEN: ${{ secrets.PERCY_TOKEN_CALL_TAKER_OTP2 }} OTP_RR_UI_MODE: calltaker diff --git a/percy/percy.test.js b/percy/percy.test.js index 462419dcb..9c62e92e7 100644 --- a/percy/percy.test.js +++ b/percy/percy.test.js @@ -357,7 +357,49 @@ async function executeTest(page, isMobile, isCallTaker) { } } -if (OTP_RR_UI_MODE === 'mobile') { +test('OTP-RR Desktop', async () => { + const page = await loadPath('/') + await page.setViewport({ + height: 1080, + width: 1920 + }) + page.on('console', async (msg) => { + const args = await msg.args() + args.forEach(async (arg) => { + const val = await arg.jsonValue() + // value is serializable + if (JSON.stringify(val) !== JSON.stringify({})) console.log(val) + // value is unserializable (or an empty oject) + else { + const { description, subtype, type } = arg._remoteObject + console.log( + `type: ${type}, subtype: ${subtype}, description:\n ${description}` + ) + } + }) + }) + // log all errors that were logged to the browser console + page.on('warn', (warn) => { + console.log(warn) + }) + page.on('error', (error) => { + console.error(error) + console.error(error.stack) + }) + // log all uncaught exceptions + page.on('pageerror', (error) => { + console.error(`Page Error: ${error}`) + }) + // log all failed requests + page.on('requestfailed', (req) => { + console.error(`Request failed: ${req.method()} ${req.url()}`) + }) + + await executeTest(page, false, OTP_RR_UI_MODE === 'calltaker') +}) + +if (OTP_RR_UI_MODE !== 'calltaker') { + // Non-calltaker test runs both mobile and desktop test. test('OTP-RR Mobile', async () => { const page = await loadPath('/') await page.setUserAgent('android') @@ -371,45 +413,4 @@ if (OTP_RR_UI_MODE === 'mobile') { // Execute the rest of the test await executeTest(page, true, false) }) -} else { - test('OTP-RR Desktop', async () => { - const page = await loadPath('/') - await page.setViewport({ - height: 1080, - width: 1920 - }) - page.on('console', async (msg) => { - const args = await msg.args() - args.forEach(async (arg) => { - const val = await arg.jsonValue() - // value is serializable - if (JSON.stringify(val) !== JSON.stringify({})) console.log(val) - // value is unserializable (or an empty oject) - else { - const { description, subtype, type } = arg._remoteObject - console.log( - `type: ${type}, subtype: ${subtype}, description:\n ${description}` - ) - } - }) - }) - // log all errors that were logged to the browser console - page.on('warn', (warn) => { - console.log(warn) - }) - page.on('error', (error) => { - console.error(error) - console.error(error.stack) - }) - // log all uncaught exceptions - page.on('pageerror', (error) => { - console.error(`Page Error: ${error}`) - }) - // log all failed requests - page.on('requestfailed', (req) => { - console.error(`Request failed: ${req.method()} ${req.url()}`) - }) - - await executeTest(page, false, OTP_RR_UI_MODE === 'calltaker') - }) } From 4b7acc1668f63f8a06e7cc5491abb22319991c80 Mon Sep 17 00:00:00 2001 From: binh-dam-ibigroup <56846598+binh-dam-ibigroup@users.noreply.github.com> Date: Fri, 8 Sep 2023 12:22:05 -0400 Subject: [PATCH 03/13] test(percy): Create and use mock geocoder responses for calltaker. --- percy/geocoder-mock.har | 793 ++++++++++++++++++++++++++++++++++++++++ percy/percy.test.js | 16 +- 2 files changed, 808 insertions(+), 1 deletion(-) create mode 100644 percy/geocoder-mock.har diff --git a/percy/geocoder-mock.har b/percy/geocoder-mock.har new file mode 100644 index 000000000..6d9e46391 --- /dev/null +++ b/percy/geocoder-mock.har @@ -0,0 +1,793 @@ +{ + "log": { + "version": "1.2", + "creator": { + "name": "WebInspector", + "version": "537.36" + }, + "pages": [], + "entries": [ + { + "request": { + "method": "GET", + "url": "http://localhost:9977/autocomplete?text=a&layers=address%2Cvenue%2Cstreet%2Cintersection&focus.point.lat=33.749&focus.point.lon=-84.388&boundary.rect.min_lat=32.066&boundary.rect.min_lon=-86.0856&boundary.rect.max_lat=35.7251&boundary.rect.max_lon=-81.9499", + "httpVersion": "http/2.0", + "queryString": [ + { + "name": "text", + "value": "a" + }, + { + "name": "layers", + "value": "address%2Cvenue%2Cstreet%2Cintersection" + }, + { + "name": "focus.point.lat", + "value": "33.749" + }, + { + "name": "focus.point.lon", + "value": "-84.388" + }, + { + "name": "boundary.rect.min_lat", + "value": "32.066" + }, + { + "name": "boundary.rect.min_lon", + "value": "-86.0856" + }, + { + "name": "boundary.rect.max_lat", + "value": "35.7251" + }, + { + "name": "boundary.rect.max_lon", + "value": "-81.9499" + } + ], + "headersSize": -1, + "bodySize": 0 + }, + "response": { + "status": 200, + "statusText": "", + "httpVersion": "http/2.0", + "content": { + "size": 11710, + "mimeType": "application/json", + "text": "" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": -1, + "_transferSize": 12109, + "_error": null + }, + "serverIPAddress": "[64:ff9b::d21:40f]", + "startedDateTime": "2023-09-08T13:53:49.885Z", + "time": 449.04499999984364, + "timings": { + "blocked": 2.153000000224507, + "dns": 86.366, + "ssl": 73.93199999999999, + "connect": 192.28, + "send": 7.209000000000003, + "wait": 160.31799999995653, + "receive": 0.7189999996626284, + "_blocked_queueing": 1.352000000224507 + } + }, + { + "request": { + "method": "GET", + "url": "http://localhost:9977/autocomplete?text=ar&layers=address%2Cvenue%2Cstreet%2Cintersection&focus.point.lat=33.749&focus.point.lon=-84.388&boundary.rect.min_lat=32.066&boundary.rect.min_lon=-86.0856&boundary.rect.max_lat=35.7251&boundary.rect.max_lon=-81.9499", + "httpVersion": "http/2.0", + "queryString": [ + { + "name": "text", + "value": "ar" + }, + { + "name": "layers", + "value": "address%2Cvenue%2Cstreet%2Cintersection" + }, + { + "name": "focus.point.lat", + "value": "33.749" + }, + { + "name": "focus.point.lon", + "value": "-84.388" + }, + { + "name": "boundary.rect.min_lat", + "value": "32.066" + }, + { + "name": "boundary.rect.min_lon", + "value": "-86.0856" + }, + { + "name": "boundary.rect.max_lat", + "value": "35.7251" + }, + { + "name": "boundary.rect.max_lon", + "value": "-81.9499" + } + ], + "headersSize": -1, + "bodySize": 0 + }, + "response": { + "status": 200, + "statusText": "", + "httpVersion": "http/2.0", + "content": { + "size": 10681, + "mimeType": "application/json", + "text": "" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": -1, + "_transferSize": 11081, + "_error": null + }, + "serverIPAddress": "[64:ff9b::d21:40f]", + "startedDateTime": "2023-09-08T13:53:49.902Z", + "time": 804.0409999994154, + "timings": { + "blocked": 181.69800000018896, + "dns": -1, + "ssl": -1, + "connect": -1, + "send": 3.2079999999999984, + "wait": 618.41899999967, + "receive": 0.7159999995565158, + "_blocked_queueing": 1.231000000188942 + } + }, + { + "request": { + "method": "GET", + "url": "http://localhost:9977/autocomplete?text=art&layers=address%2Cvenue%2Cstreet%2Cintersection&focus.point.lat=33.749&focus.point.lon=-84.388&boundary.rect.min_lat=32.066&boundary.rect.min_lon=-86.0856&boundary.rect.max_lat=35.7251&boundary.rect.max_lon=-81.9499", + "httpVersion": "http/2.0", + "queryString": [ + { + "name": "text", + "value": "art" + }, + { + "name": "layers", + "value": "address%2Cvenue%2Cstreet%2Cintersection" + }, + { + "name": "focus.point.lat", + "value": "33.749" + }, + { + "name": "focus.point.lon", + "value": "-84.388" + }, + { + "name": "boundary.rect.min_lat", + "value": "32.066" + }, + { + "name": "boundary.rect.min_lon", + "value": "-86.0856" + }, + { + "name": "boundary.rect.max_lat", + "value": "35.7251" + }, + { + "name": "boundary.rect.max_lon", + "value": "-81.9499" + } + ], + "headersSize": -1, + "bodySize": 0 + }, + "response": { + "status": 200, + "statusText": "", + "httpVersion": "http/2.0", + "content": { + "size": 10853, + "mimeType": "application/json", + "text": "" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": -1, + "_transferSize": 11253, + "_error": null + }, + "serverIPAddress": "[64:ff9b::d21:40f]", + "startedDateTime": "2023-09-08T13:53:49.909Z", + "time": 1204.160999999658, + "timings": { + "blocked": 175.13099999983532, + "dns": -1, + "ssl": -1, + "connect": -1, + "send": 2.973000000000013, + "wait": 1025.2889999999427, + "receive": 0.7679999998799758, + "_blocked_queueing": 1.2809999998353305 + } + }, + { + "request": { + "method": "GET", + "url": "http://localhost:9977/autocomplete?text=arts&layers=address%2Cvenue%2Cstreet%2Cintersection&focus.point.lat=33.749&focus.point.lon=-84.388&boundary.rect.min_lat=32.066&boundary.rect.min_lon=-86.0856&boundary.rect.max_lat=35.7251&boundary.rect.max_lon=-81.9499", + "httpVersion": "http/2.0", + "queryString": [ + { + "name": "text", + "value": "arts" + }, + { + "name": "layers", + "value": "address%2Cvenue%2Cstreet%2Cintersection" + }, + { + "name": "focus.point.lat", + "value": "33.749" + }, + { + "name": "focus.point.lon", + "value": "-84.388" + }, + { + "name": "boundary.rect.min_lat", + "value": "32.066" + }, + { + "name": "boundary.rect.min_lon", + "value": "-86.0856" + }, + { + "name": "boundary.rect.max_lat", + "value": "35.7251" + }, + { + "name": "boundary.rect.max_lon", + "value": "-81.9499" + } + ], + "headersSize": -1, + "bodySize": 0 + }, + "response": { + "status": 200, + "statusText": "", + "httpVersion": "http/2.0", + "content": { + "size": 12368, + "mimeType": "application/json", + "text": "" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": -1, + "_transferSize": 12769, + "_error": null + }, + "serverIPAddress": "[64:ff9b::d21:40f]", + "startedDateTime": "2023-09-08T13:53:49.917Z", + "time": 313.9339999997901, + "timings": { + "blocked": 167.4080000005329, + "dns": -1, + "ssl": -1, + "connect": -1, + "send": 2.7959999999999923, + "wait": 143.22000000031747, + "receive": 0.5099999989397475, + "_blocked_queueing": 1.4550000005328911 + } + }, + { + "request": { + "method": "GET", + "url": "http://localhost:9977/autocomplete?text=arts%20&layers=address%2Cvenue%2Cstreet%2Cintersection&focus.point.lat=33.749&focus.point.lon=-84.388&boundary.rect.min_lat=32.066&boundary.rect.min_lon=-86.0856&boundary.rect.max_lat=35.7251&boundary.rect.max_lon=-81.9499", + "httpVersion": "http/2.0", + "queryString": [ + { + "name": "text", + "value": "arts%20" + }, + { + "name": "layers", + "value": "address%2Cvenue%2Cstreet%2Cintersection" + }, + { + "name": "focus.point.lat", + "value": "33.749" + }, + { + "name": "focus.point.lon", + "value": "-84.388" + }, + { + "name": "boundary.rect.min_lat", + "value": "32.066" + }, + { + "name": "boundary.rect.min_lon", + "value": "-86.0856" + }, + { + "name": "boundary.rect.max_lat", + "value": "35.7251" + }, + { + "name": "boundary.rect.max_lon", + "value": "-81.9499" + } + ], + "headersSize": -1, + "bodySize": 0 + }, + "response": { + "status": 200, + "statusText": "", + "httpVersion": "http/2.0", + "content": { + "size": 12369, + "mimeType": "application/json", + "text": "" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": -1, + "_transferSize": 12768, + "_error": null + }, + "serverIPAddress": "[64:ff9b::d21:40f]", + "startedDateTime": "2023-09-08T13:53:49.923Z", + "time": 1060.0050000002739, + "timings": { + "blocked": 161.1640000008461, + "dns": -1, + "ssl": -1, + "connect": -1, + "send": 2.658999999999992, + "wait": 895.6010000000988, + "receive": 0.5809999993289239, + "_blocked_queueing": 1.4210000008461066 + } + }, + { + "request": { + "method": "GET", + "url": "http://localhost:9977/autocomplete?text=arts%20c&layers=address%2Cvenue%2Cstreet%2Cintersection&focus.point.lat=33.749&focus.point.lon=-84.388&boundary.rect.min_lat=32.066&boundary.rect.min_lon=-86.0856&boundary.rect.max_lat=35.7251&boundary.rect.max_lon=-81.9499", + "httpVersion": "http/2.0", + "queryString": [ + { + "name": "text", + "value": "arts%20c" + }, + { + "name": "layers", + "value": "address%2Cvenue%2Cstreet%2Cintersection" + }, + { + "name": "focus.point.lat", + "value": "33.749" + }, + { + "name": "focus.point.lon", + "value": "-84.388" + }, + { + "name": "boundary.rect.min_lat", + "value": "32.066" + }, + { + "name": "boundary.rect.min_lon", + "value": "-86.0856" + }, + { + "name": "boundary.rect.max_lat", + "value": "35.7251" + }, + { + "name": "boundary.rect.max_lon", + "value": "-81.9499" + } + ], + "headersSize": -1, + "bodySize": 0 + }, + "response": { + "status": 200, + "statusText": "", + "httpVersion": "http/2.0", + "content": { + "size": 10616, + "mimeType": "application/json", + "text": "" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": -1, + "_transferSize": 11016, + "_error": null + }, + "serverIPAddress": "[64:ff9b::d21:40f]", + "startedDateTime": "2023-09-08T13:53:49.932Z", + "time": 812.2540000003937, + "timings": { + "blocked": 152.40299999998243, + "dns": -1, + "ssl": -1, + "connect": -1, + "send": 2.4749999999999943, + "wait": 656.5110000004352, + "receive": 0.8649999999761349, + "_blocked_queueing": 1.6279999999824213 + } + }, + { + "request": { + "method": "GET", + "url": "http://localhost:9977/autocomplete?text=arts%20ce&layers=address%2Cvenue%2Cstreet%2Cintersection&focus.point.lat=33.749&focus.point.lon=-84.388&boundary.rect.min_lat=32.066&boundary.rect.min_lon=-86.0856&boundary.rect.max_lat=35.7251&boundary.rect.max_lon=-81.9499", + "httpVersion": "http/2.0", + "queryString": [ + { + "name": "text", + "value": "arts%20ce" + }, + { + "name": "layers", + "value": "address%2Cvenue%2Cstreet%2Cintersection" + }, + { + "name": "focus.point.lat", + "value": "33.749" + }, + { + "name": "focus.point.lon", + "value": "-84.388" + }, + { + "name": "boundary.rect.min_lat", + "value": "32.066" + }, + { + "name": "boundary.rect.min_lon", + "value": "-86.0856" + }, + { + "name": "boundary.rect.max_lat", + "value": "35.7251" + }, + { + "name": "boundary.rect.max_lon", + "value": "-81.9499" + } + ], + "headersSize": -1, + "bodySize": 0 + }, + "response": { + "status": 200, + "statusText": "", + "httpVersion": "http/2.0", + "content": { + "size": 10608, + "mimeType": "application/json", + "text": "" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": -1, + "_transferSize": 11006, + "_error": null + }, + "serverIPAddress": "[64:ff9b::d21:40f]", + "startedDateTime": "2023-09-08T13:53:49.938Z", + "time": 1667.8229999997711, + "timings": { + "blocked": 147.01800000041595, + "dns": -1, + "ssl": -1, + "connect": -1, + "send": 1.9000000000000057, + "wait": 1517.6120000000049, + "receive": 1.292999999350286, + "_blocked_queueing": 1.006000000415952 + } + }, + { + "request": { + "method": "GET", + "url": "http://localhost:9977/autocomplete?text=arts%20cen&layers=address%2Cvenue%2Cstreet%2Cintersection&focus.point.lat=33.749&focus.point.lon=-84.388&boundary.rect.min_lat=32.066&boundary.rect.min_lon=-86.0856&boundary.rect.max_lat=35.7251&boundary.rect.max_lon=-81.9499", + "httpVersion": "http/2.0", + "queryString": [ + { + "name": "text", + "value": "arts%20cen" + }, + { + "name": "layers", + "value": "address%2Cvenue%2Cstreet%2Cintersection" + }, + { + "name": "focus.point.lat", + "value": "33.749" + }, + { + "name": "focus.point.lon", + "value": "-84.388" + }, + { + "name": "boundary.rect.min_lat", + "value": "32.066" + }, + { + "name": "boundary.rect.min_lon", + "value": "-86.0856" + }, + { + "name": "boundary.rect.max_lat", + "value": "35.7251" + }, + { + "name": "boundary.rect.max_lon", + "value": "-81.9499" + } + ], + "headersSize": -1, + "bodySize": 0 + }, + "response": { + "status": 200, + "statusText": "", + "httpVersion": "http/2.0", + "content": { + "size": 10612, + "mimeType": "application/json", + "text": "" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": -1, + "_transferSize": 11011, + "_error": null + }, + "serverIPAddress": "[64:ff9b::d21:40f]", + "startedDateTime": "2023-09-08T13:53:49.950Z", + "time": 1307.301999999254, + "timings": { + "blocked": 134.52299999937532, + "dns": -1, + "ssl": -1, + "connect": -1, + "send": 2.140999999999991, + "wait": 1169.752000000069, + "receive": 0.8859999998094281, + "_blocked_queueing": 1.1479999993753154 + } + }, + { + "request": { + "method": "GET", + "url": "http://localhost:9977/autocomplete?text=arts%20cent&layers=address%2Cvenue%2Cstreet%2Cintersection&focus.point.lat=33.749&focus.point.lon=-84.388&boundary.rect.min_lat=32.066&boundary.rect.min_lon=-86.0856&boundary.rect.max_lat=35.7251&boundary.rect.max_lon=-81.9499", + "httpVersion": "http/2.0", + "queryString": [ + { + "name": "text", + "value": "arts%20cent" + }, + { + "name": "layers", + "value": "address%2Cvenue%2Cstreet%2Cintersection" + }, + { + "name": "focus.point.lat", + "value": "33.749" + }, + { + "name": "focus.point.lon", + "value": "-84.388" + }, + { + "name": "boundary.rect.min_lat", + "value": "32.066" + }, + { + "name": "boundary.rect.min_lon", + "value": "-86.0856" + }, + { + "name": "boundary.rect.max_lat", + "value": "35.7251" + }, + { + "name": "boundary.rect.max_lon", + "value": "-81.9499" + } + ], + "headersSize": -1, + "bodySize": 0 + }, + "response": { + "status": 200, + "statusText": "", + "httpVersion": "http/2.0", + "content": { + "size": 10616, + "mimeType": "application/json", + "text": "" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": -1, + "_transferSize": 11016, + "_error": null + }, + "serverIPAddress": "[64:ff9b::d21:40f]", + "startedDateTime": "2023-09-08T13:53:49.958Z", + "time": 746.1700000003475, + "timings": { + "blocked": 126.27700000000658, + "dns": -1, + "ssl": -1, + "connect": -1, + "send": 2.3049999999999926, + "wait": 616.7630000002638, + "receive": 0.8250000000771252, + "_blocked_queueing": 0.9430000000065775 + } + }, + { + "request": { + "method": "GET", + "url": "http://localhost:9977/autocomplete?text=arts%20cente&layers=address%2Cvenue%2Cstreet%2Cintersection&focus.point.lat=33.749&focus.point.lon=-84.388&boundary.rect.min_lat=32.066&boundary.rect.min_lon=-86.0856&boundary.rect.max_lat=35.7251&boundary.rect.max_lon=-81.9499", + "httpVersion": "http/2.0", + "queryString": [ + { + "name": "text", + "value": "arts%20cente" + }, + { + "name": "layers", + "value": "address%2Cvenue%2Cstreet%2Cintersection" + }, + { + "name": "focus.point.lat", + "value": "33.749" + }, + { + "name": "focus.point.lon", + "value": "-84.388" + }, + { + "name": "boundary.rect.min_lat", + "value": "32.066" + }, + { + "name": "boundary.rect.min_lon", + "value": "-86.0856" + }, + { + "name": "boundary.rect.max_lat", + "value": "35.7251" + }, + { + "name": "boundary.rect.max_lon", + "value": "-81.9499" + } + ], + "headersSize": -1, + "bodySize": 0 + }, + "response": { + "status": 200, + "statusText": "", + "httpVersion": "http/2.0", + "content": { + "size": 10620, + "mimeType": "application/json", + "text": "" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": -1, + "_transferSize": 11020, + "_error": null + }, + "serverIPAddress": "[64:ff9b::d21:40f]", + "startedDateTime": "2023-09-08T13:53:49.967Z", + "time": 1989.0759999998409, + "timings": { + "blocked": 117.72999999992608, + "dns": -1, + "ssl": -1, + "connect": -1, + "send": 2.0219999999999914, + "wait": 1868.6450000001512, + "receive": 0.6789999997636187, + "_blocked_queueing": 1.1549999999260763 + } + }, + { + "request": { + "method": "GET", + "url": "http://localhost:9977/autocomplete?text=arts%20center&layers=address%2Cvenue%2Cstreet%2Cintersection&focus.point.lat=33.749&focus.point.lon=-84.388&boundary.rect.min_lat=32.066&boundary.rect.min_lon=-86.0856&boundary.rect.max_lat=35.7251&boundary.rect.max_lon=-81.9499", + "httpVersion": "http/2.0", + "queryString": [ + { + "name": "text", + "value": "arts%20center" + }, + { + "name": "layers", + "value": "address%2Cvenue%2Cstreet%2Cintersection" + }, + { + "name": "focus.point.lat", + "value": "33.749" + }, + { + "name": "focus.point.lon", + "value": "-84.388" + }, + { + "name": "boundary.rect.min_lat", + "value": "32.066" + }, + { + "name": "boundary.rect.min_lon", + "value": "-86.0856" + }, + { + "name": "boundary.rect.max_lat", + "value": "35.7251" + }, + { + "name": "boundary.rect.max_lon", + "value": "-81.9499" + } + ], + "headersSize": -1, + "bodySize": 0 + }, + "response": { + "status": 200, + "statusText": "", + "httpVersion": "http/2.0", + "content": { + "size": 12558, + "mimeType": "application/json", + "text": "{\"geocoding\":{\"version\":\"0.2\",\"attribution\":\"https://geocode.earth/guidelines\",\"query\":{\"text\":\"arts center\",\"parser\":\"pelias\",\"parsed_text\":{\"subject\":\"arts center\",\"street\":\"arts center\"},\"size\":10,\"layers\":[\"address\",\"venue\",\"street\",\"intersection\"],\"sources\":[\"openstreetmap\",\"openaddresses\",\"geonames\",\"whosonfirst\",\"uscensus\"],\"private\":false,\"focus.point.lat\":33.749,\"focus.point.lon\":-84.388,\"boundary.rect.min_lat\":32.066,\"boundary.rect.max_lat\":35.7251,\"boundary.rect.min_lon\":-86.0856,\"boundary.rect.max_lon\":-81.9499,\"lang\":{\"name\":\"English\",\"iso6391\":\"en\",\"iso6393\":\"eng\",\"via\":\"default\",\"defaulted\":true},\"querySize\":20},\"engine\":{\"name\":\"Pelias\",\"author\":\"Mapzen\",\"version\":\"1.0\"},\"timestamp\":1694180535585},\"type\":\"FeatureCollection\",\"features\":[{\"geometry\":{\"type\":\"Point\",\"coordinates\":[-84.387125,33.789283]},\"id\":\"MARTA:68900\",\"properties\":{\"layer\":\"stops\",\"source\":\"otp\",\"name\":\"Arts Center Station (901789)\",\"label\":\"Arts Center Station (901789)\"},\"type\":\"Feature\"},{\"geometry\":{\"type\":\"Point\",\"coordinates\":[-84.38712,33.789418]},\"id\":\"CobbLinc:717\",\"properties\":{\"layer\":\"stops\",\"source\":\"otp\",\"name\":\"Arts Center Station (920907)\",\"label\":\"Arts Center Station (920907)\"},\"type\":\"Feature\"},{\"geometry\":{\"type\":\"Point\",\"coordinates\":[-84.387272,33.788828]},\"id\":\"MARTA:112\",\"properties\":{\"layer\":\"stops\",\"source\":\"otp\",\"name\":\"Arts Center Station (906370)\",\"label\":\"Arts Center Station (906370)\"},\"type\":\"Feature\"},{\"geometry\":{\"type\":\"Point\",\"coordinates\":[-84.387414,33.789669]},\"id\":\"MARTA:111\",\"properties\":{\"layer\":\"stops\",\"source\":\"otp\",\"name\":\"Arts Center Station (906369)\",\"label\":\"Arts Center Station (906369)\"},\"type\":\"Feature\"},{\"geometry\":{\"type\":\"Point\",\"coordinates\":[-84.387692,33.789216]},\"id\":\"Xpress:239\",\"properties\":{\"layer\":\"stops\",\"source\":\"otp\",\"name\":\"Arts Center Station (400208)\",\"label\":\"Arts Center Station (400208)\"},\"type\":\"Feature\"},{\"geometry\":{\"type\":\"Point\",\"coordinates\":[-84.386904,33.789285]},\"id\":\"GwinnettCountyTransit:32\",\"properties\":{\"layer\":\"stops\",\"source\":\"otp\",\"name\":\"Arts Center MARTA Station (32)\",\"label\":\"Arts Center MARTA Station (32)\"},\"type\":\"Feature\"},{\"geometry\":{\"type\":\"Point\",\"coordinates\":[-84.386402,33.789213]},\"id\":\"MARTA:99973485\",\"properties\":{\"layer\":\"stops\",\"source\":\"otp\",\"name\":\"Arts Center Way at 15th St (Arts Center Stn - Upper Entrance) (213110)\",\"label\":\"Arts Center Way at 15th St (Arts Center Stn - Upper Entrance) (213110)\"},\"type\":\"Feature\"},{\"geometry\":{\"type\":\"Point\",\"coordinates\":[-84.38568,33.788298]},\"id\":\"MARTA:68056\",\"properties\":{\"layer\":\"stops\",\"source\":\"otp\",\"name\":\"15th St NE at Arts Center Way NE (902514)\",\"label\":\"15th St NE at Arts Center Way NE (902514)\"},\"type\":\"Feature\"},{\"type\":\"Feature\",\"geometry\":{\"type\":\"Point\",\"coordinates\":[-84.387325,33.789121]},\"properties\":{\"id\":\"node/4172450835\",\"gid\":\"openstreetmap:venue:node/4172450835\",\"layer\":\"venue\",\"source\":\"openstreetmap\",\"source_id\":\"node/4172450835\",\"country_code\":\"US\",\"name\":\"Arts Center\",\"distance\":4.467,\"accuracy\":\"point\",\"country\":\"United States\",\"country_gid\":\"whosonfirst:country:85633793\",\"country_a\":\"USA\",\"region\":\"Georgia\",\"region_gid\":\"whosonfirst:region:85688535\",\"region_a\":\"GA\",\"county\":\"Fulton County\",\"county_gid\":\"whosonfirst:county:102083603\",\"county_a\":\"FU\",\"locality\":\"Atlanta\",\"locality_gid\":\"whosonfirst:locality:85936429\",\"continent\":\"North America\",\"continent_gid\":\"whosonfirst:continent:102191575\",\"label\":\"Arts Center, Atlanta, GA, USA\",\"addendum\":{\"osm\":{\"wheelchair\":\"yes\",\"wikidata\":\"Q4801432\"}}}},{\"type\":\"Feature\",\"geometry\":{\"type\":\"Point\",\"coordinates\":[-84.385282,33.789341]},\"properties\":{\"id\":\"way/28961767\",\"gid\":\"openstreetmap:venue:way/28961767\",\"layer\":\"venue\",\"source\":\"openstreetmap\",\"source_id\":\"way/28961767\",\"country_code\":\"US\",\"name\":\"Woodruff Arts Center\",\"housenumber\":\"1314\",\"street\":\"Peachtree Street NE\",\"postalcode\":\"30309\",\"distance\":4.498,\"accuracy\":\"point\",\"country\":\"United States\",\"country_gid\":\"whosonfirst:country:85633793\",\"country_a\":\"USA\",\"region\":\"Georgia\",\"region_gid\":\"whosonfirst:region:85688535\",\"region_a\":\"GA\",\"county\":\"Fulton County\",\"county_gid\":\"whosonfirst:county:102083603\",\"county_a\":\"FU\",\"locality\":\"Atlanta\",\"locality_gid\":\"whosonfirst:locality:85936429\",\"continent\":\"North America\",\"continent_gid\":\"whosonfirst:continent:102191575\",\"label\":\"Woodruff Arts Center, Atlanta, GA, USA\",\"addendum\":{\"osm\":{\"wheelchair\":\"yes\",\"wikidata\":\"Q8033228\",\"website\":\"https://woodruffcenter.org/\"}}},\"bbox\":[-84.3859925,33.7885967,-84.3844398,33.7896945]},{\"type\":\"Feature\",\"geometry\":{\"type\":\"Point\",\"coordinates\":[-84.389529,33.756815]},\"properties\":{\"id\":\"way/252608898\",\"gid\":\"openstreetmap:venue:way/252608898\",\"layer\":\"venue\",\"source\":\"openstreetmap\",\"source_id\":\"way/252608898\",\"country_code\":\"US\",\"name\":\"Rialto Center for the Arts\",\"housenumber\":\"80\",\"street\":\"Forsyth Street NW\",\"postalcode\":\"30303\",\"distance\":0.881,\"accuracy\":\"point\",\"country\":\"United States\",\"country_gid\":\"whosonfirst:country:85633793\",\"country_a\":\"USA\",\"region\":\"Georgia\",\"region_gid\":\"whosonfirst:region:85688535\",\"region_a\":\"GA\",\"county\":\"Fulton County\",\"county_gid\":\"whosonfirst:county:102083603\",\"county_a\":\"FU\",\"locality\":\"Atlanta\",\"locality_gid\":\"whosonfirst:locality:85936429\",\"continent\":\"North America\",\"continent_gid\":\"whosonfirst:continent:102191575\",\"label\":\"Rialto Center for the Arts, Atlanta, GA, USA\",\"addendum\":{\"osm\":{\"wikidata\":\"Q7322136\",\"wikipedia\":\"en:Rialto Center for the Arts\",\"operator\":\"Georgia State University\",\"website\":\"https://rialto.gsu.edu/\",\"phone\":\"+1 404 413 9849\"}}},\"bbox\":[-84.3897872,33.7565707,-84.3892141,33.7570301]},{\"type\":\"Feature\",\"geometry\":{\"type\":\"Point\",\"coordinates\":[-84.388317,33.789408]},\"properties\":{\"id\":\"way/536720728\",\"gid\":\"openstreetmap:venue:way/536720728\",\"layer\":\"venue\",\"source\":\"openstreetmap\",\"source_id\":\"way/536720728\",\"country_code\":\"US\",\"name\":\"Arts Center Tower\",\"housenumber\":\"1270\",\"street\":\"West Peachtree Street NW\",\"distance\":4.498,\"accuracy\":\"point\",\"country\":\"United States\",\"country_gid\":\"whosonfirst:country:85633793\",\"country_a\":\"USA\",\"region\":\"Georgia\",\"region_gid\":\"whosonfirst:region:85688535\",\"region_a\":\"GA\",\"county\":\"Fulton County\",\"county_gid\":\"whosonfirst:county:102083603\",\"county_a\":\"FU\",\"locality\":\"Atlanta\",\"locality_gid\":\"whosonfirst:locality:85936429\",\"continent\":\"North America\",\"continent_gid\":\"whosonfirst:continent:102191575\",\"label\":\"Arts Center Tower, Atlanta, GA, USA\"},\"bbox\":[-84.3885134,33.7891714,-84.3879231,33.7895687]},{\"type\":\"Feature\",\"geometry\":{\"type\":\"Point\",\"coordinates\":[-84.389665,33.792892]},\"properties\":{\"id\":\"way/269541904\",\"gid\":\"openstreetmap:venue:way/269541904\",\"layer\":\"venue\",\"source\":\"openstreetmap\",\"source_id\":\"way/269541904\",\"country_code\":\"US\",\"name\":\"Center for Puppetry Arts\",\"housenumber\":\"1404\",\"street\":\"Spring Street NW\",\"postalcode\":\"30309\",\"distance\":4.888,\"accuracy\":\"point\",\"country\":\"United States\",\"country_gid\":\"whosonfirst:country:85633793\",\"country_a\":\"USA\",\"region\":\"Georgia\",\"region_gid\":\"whosonfirst:region:85688535\",\"region_a\":\"GA\",\"county\":\"Fulton County\",\"county_gid\":\"whosonfirst:county:102083603\",\"county_a\":\"FU\",\"locality\":\"Atlanta\",\"locality_gid\":\"whosonfirst:locality:85936429\",\"continent\":\"North America\",\"continent_gid\":\"whosonfirst:continent:102191575\",\"label\":\"Center for Puppetry Arts, Atlanta, GA, USA\",\"addendum\":{\"osm\":{\"wheelchair\":\"yes\",\"website\":\"https://puppet.org/\",\"phone\":\"+1 404 873 3391\",\"opening_hours\":\"Tu-Fr 09:00-17:00; Sa 10:00-17:00; Su 12:00-17:00\"}}},\"bbox\":[-84.3898377,33.7925985,-84.3893181,33.7932157]},{\"type\":\"Feature\",\"geometry\":{\"type\":\"Point\",\"coordinates\":[-84.386897,33.789283]},\"properties\":{\"id\":\"way/269637886\",\"gid\":\"openstreetmap:venue:way/269637886\",\"layer\":\"venue\",\"source\":\"openstreetmap\",\"source_id\":\"way/269637886\",\"country_code\":\"US\",\"name\":\"MARTA Arts Center Station\",\"distance\":4.485,\"accuracy\":\"point\",\"country\":\"United States\",\"country_gid\":\"whosonfirst:country:85633793\",\"country_a\":\"USA\",\"region\":\"Georgia\",\"region_gid\":\"whosonfirst:region:85688535\",\"region_a\":\"GA\",\"county\":\"Fulton County\",\"county_gid\":\"whosonfirst:county:102083603\",\"county_a\":\"FU\",\"locality\":\"Atlanta\",\"locality_gid\":\"whosonfirst:locality:85936429\",\"continent\":\"North America\",\"continent_gid\":\"whosonfirst:continent:102191575\",\"label\":\"MARTA Arts Center Station, Atlanta, GA, USA\"},\"bbox\":[-84.3872294,33.788859,-84.3867044,33.7898455]},{\"type\":\"Feature\",\"geometry\":{\"type\":\"Point\",\"coordinates\":[-84.416912,33.744017]},\"properties\":{\"id\":\"way/802755819\",\"gid\":\"openstreetmap:venue:way/802755819\",\"layer\":\"venue\",\"source\":\"openstreetmap\",\"source_id\":\"way/802755819\",\"country_code\":\"US\",\"name\":\"Ray Charles Proformance Arts Center\",\"distance\":2.733,\"accuracy\":\"point\",\"country\":\"United States\",\"country_gid\":\"whosonfirst:country:85633793\",\"country_a\":\"USA\",\"region\":\"Georgia\",\"region_gid\":\"whosonfirst:region:85688535\",\"region_a\":\"GA\",\"county\":\"Fulton County\",\"county_gid\":\"whosonfirst:county:102083603\",\"county_a\":\"FU\",\"locality\":\"Atlanta\",\"locality_gid\":\"whosonfirst:locality:85936429\",\"neighbourhood\":\"Harris Chiles\",\"neighbourhood_gid\":\"whosonfirst:neighbourhood:1108798423\",\"continent\":\"North America\",\"continent_gid\":\"whosonfirst:continent:102191575\",\"label\":\"Ray Charles Proformance Arts Center, Atlanta, GA, USA\"},\"bbox\":[-84.417336,33.7436268,-84.4164033,33.7442824]},{\"type\":\"Feature\",\"geometry\":{\"type\":\"Point\",\"coordinates\":[-84.345203,33.781772]},\"properties\":{\"id\":\"node/367912794\",\"gid\":\"openstreetmap:venue:node/367912794\",\"layer\":\"venue\",\"source\":\"openstreetmap\",\"source_id\":\"node/367912794\",\"country_code\":\"US\",\"name\":\"Callanwolde Fine Arts Center\",\"housenumber\":\"980\",\"street\":\"Briarcliff Road NE\",\"distance\":5.385,\"accuracy\":\"point\",\"country\":\"United States\",\"country_gid\":\"whosonfirst:country:85633793\",\"country_a\":\"USA\",\"region\":\"Georgia\",\"region_gid\":\"whosonfirst:region:85688535\",\"region_a\":\"GA\",\"county\":\"DeKalb County\",\"county_gid\":\"whosonfirst:county:102084539\",\"county_a\":\"DA\",\"locality\":\"Druid Hills\",\"locality_gid\":\"whosonfirst:locality:85937251\",\"continent\":\"North America\",\"continent_gid\":\"whosonfirst:continent:102191575\",\"label\":\"Callanwolde Fine Arts Center, Druid Hills, GA, USA\",\"addendum\":{\"osm\":{\"website\":\"https://www.callanwolde.org/\",\"phone\":\"+1-404-872-5338\",\"opening_hours\":\"Mo-Th 09:00-17:00; Fr-Sa 09:00-12:00\"}}}},{\"type\":\"Feature\",\"geometry\":{\"type\":\"Point\",\"coordinates\":[-84.399209,33.774791]},\"properties\":{\"id\":\"way/43332730\",\"gid\":\"openstreetmap:venue:way/43332730\",\"layer\":\"venue\",\"source\":\"openstreetmap\",\"source_id\":\"way/43332730\",\"country_code\":\"US\",\"name\":\"Robert H. Ferst Center for the Arts\",\"distance\":3.053,\"accuracy\":\"point\",\"country\":\"United States\",\"country_gid\":\"whosonfirst:country:85633793\",\"country_a\":\"USA\",\"region\":\"Georgia\",\"region_gid\":\"whosonfirst:region:85688535\",\"region_a\":\"GA\",\"county\":\"Fulton County\",\"county_gid\":\"whosonfirst:county:102083603\",\"county_a\":\"FU\",\"locality\":\"Atlanta\",\"locality_gid\":\"whosonfirst:locality:85936429\",\"neighbourhood\":\"Georgia Tech\",\"neighbourhood_gid\":\"whosonfirst:neighbourhood:1108798439\",\"continent\":\"North America\",\"continent_gid\":\"whosonfirst:continent:102191575\",\"label\":\"Robert H. Ferst Center for the Arts, Atlanta, GA, USA\",\"addendum\":{\"osm\":{\"wikidata\":\"Q5445560\"}}},\"bbox\":[-84.3994357,33.7747789,-84.3989903,33.7754228]},{\"type\":\"Feature\",\"geometry\":{\"type\":\"Point\",\"coordinates\":[-84.392316,33.750426]},\"properties\":{\"id\":\"node/3499486829\",\"gid\":\"openstreetmap:venue:node/3499486829\",\"layer\":\"venue\",\"source\":\"openstreetmap\",\"source_id\":\"node/3499486829\",\"country_code\":\"US\",\"name\":\"FUSE Arts Center (C4 Atlanta)\",\"housenumber\":\"132\",\"street\":\"Mitchell Street SW\",\"postalcode\":\"30303\",\"distance\":0.43,\"accuracy\":\"point\",\"country\":\"United States\",\"country_gid\":\"whosonfirst:country:85633793\",\"country_a\":\"USA\",\"region\":\"Georgia\",\"region_gid\":\"whosonfirst:region:85688535\",\"region_a\":\"GA\",\"county\":\"Fulton County\",\"county_gid\":\"whosonfirst:county:102083603\",\"county_a\":\"FU\",\"locality\":\"Atlanta\",\"locality_gid\":\"whosonfirst:locality:85936429\",\"continent\":\"North America\",\"continent_gid\":\"whosonfirst:continent:102191575\",\"label\":\"FUSE Arts Center (C4 Atlanta), Atlanta, GA, USA\",\"addendum\":{\"osm\":{\"website\":\"https://www.c4atlanta.org\",\"phone\":\"+1-404-969-2787\"}}}}],\"bbox\":[-84.417336,33.7436268,-84.345203,33.7932157],\"isomorphicMapzenSearchQuery\":{\"api_key\":\"ge-0624346c114543d5\",\"text\":\"arts center\",\"layers\":\"address,venue,street,intersection\",\"focus.point.lat\":33.749,\"focus.point.lon\":-84.388,\"boundary.rect.min_lat\":32.066,\"boundary.rect.min_lon\":-86.0856,\"boundary.rect.max_lat\":35.7251,\"boundary.rect.max_lon\":-81.9499}}" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": -1, + "_transferSize": 12959, + "_error": null + }, + "serverIPAddress": "[64:ff9b::d21:40f]", + "startedDateTime": "2023-09-08T13:53:49.974Z", + "time": 1773.866000000453, + "timings": { + "blocked": 111.16500000039605, + "dns": -1, + "ssl": -1, + "connect": -1, + "send": 1.6709999999999923, + "wait": 1659.9850000000804, + "receive": 1.044999999976426, + "_blocked_queueing": 1.194000000396045 + } + } + ] + } +} \ No newline at end of file diff --git a/percy/percy.test.js b/percy/percy.test.js index 9c62e92e7..e6862a86e 100644 --- a/percy/percy.test.js +++ b/percy/percy.test.js @@ -22,6 +22,7 @@ const percySnapshotWithWait = async (page, name, enableJavaScript) => { let browser const serveAbortController = new AbortController() const harAbortController = new AbortController() +const geocoderAbortController = new AbortController() /** * Loads a path @@ -49,6 +50,15 @@ beforeAll(async () => { signal: harAbortController.signal }).stdout.pipe(process.stdout) + // Launch mock geocoder server + execa( + 'yarn', + ['percy-har-express', '-p', '9977', 'percy/geocoder-mock.har'], + { + signal: geocoderAbortController.signal + } + ).stdout.pipe(process.stdout) + // Web security is disabled to allow requests to the mock OTP server browser = await puppeteer.launch({ args: ['--disable-web-security'] @@ -66,6 +76,7 @@ afterAll(async () => { try { serveAbortController.abort() harAbortController.abort() + geocoderAbortController.abort() await browser.close() } catch (error) { console.log(error) @@ -73,7 +84,7 @@ afterAll(async () => { console.log('Closed mock server and headless browser') }) -// Puppeteer can take a long time to load, espeically in some ci environments +// Puppeteer can take a long time to load, especially in some ci environments jest.setTimeout(600000) async function executeTest(page, isMobile, isCallTaker) { @@ -153,6 +164,7 @@ async function executeTest(page, isMobile, isCallTaker) { // Fill in new origin await page.hover('.from-form-control') await page.focus('.from-form-control') + // FIXME: Characters are typed very fast, but each stroke still triggers a geocoder call. await page.keyboard.type('Opus Music') await page.waitForTimeout(2000) await page.keyboard.press('ArrowDown') @@ -161,6 +173,7 @@ async function executeTest(page, isMobile, isCallTaker) { // Fill in new destination await page.focus('.to-form-control') + // FIXME: Characters are typed very fast, but each stroke still triggers a geocoder call. await page.keyboard.type('908981') await page.waitForTimeout(2000) await page.keyboard.press('ArrowDown') @@ -196,6 +209,7 @@ async function executeTest(page, isMobile, isCallTaker) { ) await page.waitForSelector('.intermediate-place-0-form-control') await page.focus('.intermediate-place-0-form-control') + // FIXME: Characters are typed very fast, but each stroke still triggers a geocoder call. await page.keyboard.type('arts center') await page.waitForTimeout(2000) await page.keyboard.press('ArrowDown') From 4a262a6fa10fcc098d9fbf4eaf194a9289304018 Mon Sep 17 00:00:00 2001 From: binh-dam-ibigroup <56846598+binh-dam-ibigroup@users.noreply.github.com> Date: Fri, 8 Sep 2023 16:11:53 -0400 Subject: [PATCH 04/13] test(percy): Use different mock files for normal vs calltaker --- ...r-mock.har => geocoder-mock-calltaker.har} | 18 +- percy/geocoder-mock-normal.har | 1130 +++++++++++++++++ percy/percy.test.js | 7 +- 3 files changed, 1145 insertions(+), 10 deletions(-) rename percy/{geocoder-mock.har => geocoder-mock-calltaker.har} (99%) create mode 100644 percy/geocoder-mock-normal.har diff --git a/percy/geocoder-mock.har b/percy/geocoder-mock-calltaker.har similarity index 99% rename from percy/geocoder-mock.har rename to percy/geocoder-mock-calltaker.har index 6d9e46391..447fc319f 100644 --- a/percy/geocoder-mock.har +++ b/percy/geocoder-mock-calltaker.har @@ -125,7 +125,7 @@ "statusText": "", "httpVersion": "http/2.0", "content": { - "size": 10681, + "size": 0, "mimeType": "application/json", "text": "" }, @@ -196,7 +196,7 @@ "statusText": "", "httpVersion": "http/2.0", "content": { - "size": 10853, + "size": 0, "mimeType": "application/json", "text": "" }, @@ -267,7 +267,7 @@ "statusText": "", "httpVersion": "http/2.0", "content": { - "size": 12368, + "size": 0, "mimeType": "application/json", "text": "" }, @@ -338,7 +338,7 @@ "statusText": "", "httpVersion": "http/2.0", "content": { - "size": 12369, + "size": 0, "mimeType": "application/json", "text": "" }, @@ -409,7 +409,7 @@ "statusText": "", "httpVersion": "http/2.0", "content": { - "size": 10616, + "size": 0, "mimeType": "application/json", "text": "" }, @@ -480,7 +480,7 @@ "statusText": "", "httpVersion": "http/2.0", "content": { - "size": 10608, + "size": 0, "mimeType": "application/json", "text": "" }, @@ -551,7 +551,7 @@ "statusText": "", "httpVersion": "http/2.0", "content": { - "size": 10612, + "size": 0, "mimeType": "application/json", "text": "" }, @@ -622,7 +622,7 @@ "statusText": "", "httpVersion": "http/2.0", "content": { - "size": 10616, + "size": 0, "mimeType": "application/json", "text": "" }, @@ -693,7 +693,7 @@ "statusText": "", "httpVersion": "http/2.0", "content": { - "size": 10620, + "size": 0, "mimeType": "application/json", "text": "" }, diff --git a/percy/geocoder-mock-normal.har b/percy/geocoder-mock-normal.har new file mode 100644 index 000000000..5d6763cd2 --- /dev/null +++ b/percy/geocoder-mock-normal.har @@ -0,0 +1,1130 @@ +{ + "log": { + "version": "1.2", + "creator": { + "name": "WebInspector", + "version": "537.36" + }, + "pages": [], + "entries": [ + { + "request": { + "method": "GET", + "url": "http://localhost:9977/autocomplete?text=O&layers=address%2Cvenue%2Cstreet%2Cintersection&focus.point.lat=33.749&focus.point.lon=-84.388&boundary.rect.min_lat=32.066&boundary.rect.min_lon=-86.0856&boundary.rect.max_lat=35.7251&boundary.rect.max_lon=-81.9499", + "httpVersion": "http/2.0", + "queryString": [ + { + "name": "text", + "value": "O" + }, + { + "name": "layers", + "value": "address%2Cvenue%2Cstreet%2Cintersection" + }, + { + "name": "focus.point.lat", + "value": "33.749" + }, + { + "name": "focus.point.lon", + "value": "-84.388" + }, + { + "name": "boundary.rect.min_lat", + "value": "32.066" + }, + { + "name": "boundary.rect.min_lon", + "value": "-86.0856" + }, + { + "name": "boundary.rect.max_lat", + "value": "35.7251" + }, + { + "name": "boundary.rect.max_lon", + "value": "-81.9499" + } + ], + "headersSize": -1, + "bodySize": 0 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "http/2.0", + "content": { + "size": 0, + "mimeType": "application/json", + "text": "" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": -1, + "_transferSize": 12785, + "_error": null + }, + "serverIPAddress": "[64:ff9b::de1:2f3f]", + "startedDateTime": "2023-09-08T14:07:22.644Z", + "time": 2125.9739999999583, + "timings": { + "blocked": 15.940999999456107, + "dns": 73.76899999999999, + "ssl": 1088.1299999999999, + "connect": 1244.485, + "send": 4.813000000000102, + "wait": 786.1689999998994, + "receive": 0.7970000006025657, + "_blocked_queueing": 1.1159999994561076 + } + }, + { + "request": { + "method": "GET", + "url": "http://localhost:9977/autocomplete?text=Op&layers=address%2Cvenue%2Cstreet%2Cintersection&focus.point.lat=33.749&focus.point.lon=-84.388&boundary.rect.min_lat=32.066&boundary.rect.min_lon=-86.0856&boundary.rect.max_lat=35.7251&boundary.rect.max_lon=-81.9499", + "httpVersion": "http/2.0", + "queryString": [ + { + "name": "text", + "value": "Op" + }, + { + "name": "layers", + "value": "address%2Cvenue%2Cstreet%2Cintersection" + }, + { + "name": "focus.point.lat", + "value": "33.749" + }, + { + "name": "focus.point.lon", + "value": "-84.388" + }, + { + "name": "boundary.rect.min_lat", + "value": "32.066" + }, + { + "name": "boundary.rect.min_lon", + "value": "-86.0856" + }, + { + "name": "boundary.rect.max_lat", + "value": "35.7251" + }, + { + "name": "boundary.rect.max_lon", + "value": "-81.9499" + } + ], + "headersSize": -1, + "bodySize": 0 + }, + "response": { + "status": 200, + "statusText": "", + "httpVersion": "http/2.0", + "content": { + "size": 0, + "mimeType": "application/json", + "text": "" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": -1, + "_transferSize": 11262, + "_error": null + }, + "serverIPAddress": "[64:ff9b::de1:2f3f]", + "startedDateTime": "2023-09-08T14:07:22.656Z", + "time": 2307.477999999719, + "timings": { + "blocked": 1250.2649999995253, + "dns": -1, + "ssl": -1, + "connect": -1, + "send": 2.7480000000000473, + "wait": 1053.786999999859, + "receive": 0.6780000003345776, + "_blocked_queueing": 3.2949999995253165 + } + }, + { + "request": { + "method": "GET", + "url": "http://localhost:9977/autocomplete?text=Opu&layers=address%2Cvenue%2Cstreet%2Cintersection&focus.point.lat=33.749&focus.point.lon=-84.388&boundary.rect.min_lat=32.066&boundary.rect.min_lon=-86.0856&boundary.rect.max_lat=35.7251&boundary.rect.max_lon=-81.9499", + "httpVersion": "http/2.0", + "queryString": [ + { + "name": "text", + "value": "Opu" + }, + { + "name": "layers", + "value": "address%2Cvenue%2Cstreet%2Cintersection" + }, + { + "name": "focus.point.lat", + "value": "33.749" + }, + { + "name": "focus.point.lon", + "value": "-84.388" + }, + { + "name": "boundary.rect.min_lat", + "value": "32.066" + }, + { + "name": "boundary.rect.min_lon", + "value": "-86.0856" + }, + { + "name": "boundary.rect.max_lat", + "value": "35.7251" + }, + { + "name": "boundary.rect.max_lon", + "value": "-81.9499" + } + ], + "headersSize": -1, + "bodySize": 0 + }, + "response": { + "status": 200, + "statusText": "", + "httpVersion": "http/2.0", + "content": { + "size": 0, + "mimeType": "application/json", + "text": "" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": -1, + "_transferSize": 5615, + "_error": null + }, + "serverIPAddress": "[64:ff9b::de1:2f3f]", + "startedDateTime": "2023-09-08T14:07:22.663Z", + "time": 2034.0139999998428, + "timings": { + "blocked": 1243.6879999990954, + "dns": -1, + "ssl": -1, + "connect": -1, + "send": 2.394999999999982, + "wait": 787.3710000003423, + "receive": 0.5600000004051253, + "_blocked_queueing": 3.059999999095453 + } + }, + { + "request": { + "method": "GET", + "url": "http://localhost:9977/autocomplete?text=Opus&layers=address%2Cvenue%2Cstreet%2Cintersection&focus.point.lat=33.749&focus.point.lon=-84.388&boundary.rect.min_lat=32.066&boundary.rect.min_lon=-86.0856&boundary.rect.max_lat=35.7251&boundary.rect.max_lon=-81.9499", + "httpVersion": "http/2.0", + "queryString": [ + { + "name": "text", + "value": "Opus" + }, + { + "name": "layers", + "value": "address%2Cvenue%2Cstreet%2Cintersection" + }, + { + "name": "focus.point.lat", + "value": "33.749" + }, + { + "name": "focus.point.lon", + "value": "-84.388" + }, + { + "name": "boundary.rect.min_lat", + "value": "32.066" + }, + { + "name": "boundary.rect.min_lon", + "value": "-86.0856" + }, + { + "name": "boundary.rect.max_lat", + "value": "35.7251" + }, + { + "name": "boundary.rect.max_lon", + "value": "-81.9499" + } + ], + "headersSize": -1, + "bodySize": 0 + }, + "response": { + "status": 200, + "statusText": "", + "httpVersion": "http/2.0", + "content": { + "size": 0, + "mimeType": "application/json", + "text": "" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": -1, + "_transferSize": 5619, + "_error": null + }, + "serverIPAddress": "[64:ff9b::de1:2f3f]", + "startedDateTime": "2023-09-08T14:07:22.666Z", + "time": 1865.16599999959, + "timings": { + "blocked": 1240.8119999999617, + "dns": -1, + "ssl": -1, + "connect": -1, + "send": 2.0030000000001564, + "wait": 621.6149999996674, + "receive": 0.735999999960768, + "_blocked_queueing": 4.472999999961758 + } + }, + { + "request": { + "method": "GET", + "url": "http://localhost:9977/autocomplete?text=Opus%20&layers=address%2Cvenue%2Cstreet%2Cintersection&focus.point.lat=33.749&focus.point.lon=-84.388&boundary.rect.min_lat=32.066&boundary.rect.min_lon=-86.0856&boundary.rect.max_lat=35.7251&boundary.rect.max_lon=-81.9499", + "httpVersion": "http/2.0", + "queryString": [ + { + "name": "text", + "value": "Opus%20" + }, + { + "name": "layers", + "value": "address%2Cvenue%2Cstreet%2Cintersection" + }, + { + "name": "focus.point.lat", + "value": "33.749" + }, + { + "name": "focus.point.lon", + "value": "-84.388" + }, + { + "name": "boundary.rect.min_lat", + "value": "32.066" + }, + { + "name": "boundary.rect.min_lon", + "value": "-86.0856" + }, + { + "name": "boundary.rect.max_lat", + "value": "35.7251" + }, + { + "name": "boundary.rect.max_lon", + "value": "-81.9499" + } + ], + "headersSize": -1, + "bodySize": 0 + }, + "response": { + "status": 200, + "statusText": "", + "httpVersion": "http/2.0", + "content": { + "size": 0, + "mimeType": "application/json", + "text": "" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": -1, + "_transferSize": 5621, + "_error": null + }, + "serverIPAddress": "[64:ff9b::de1:2f3f]", + "startedDateTime": "2023-09-08T14:07:22.676Z", + "time": 2317.60100000065, + "timings": { + "blocked": 1231.086000000746, + "dns": -1, + "ssl": -1, + "connect": -1, + "send": 1.884999999999991, + "wait": 1083.7900000002057, + "receive": 0.8399999996981933, + "_blocked_queueing": 8.215000000745931 + } + }, + { + "request": { + "method": "GET", + "url": "http://localhost:9977/autocomplete?text=Opus%20M&layers=address%2Cvenue%2Cstreet%2Cintersection&focus.point.lat=33.749&focus.point.lon=-84.388&boundary.rect.min_lat=32.066&boundary.rect.min_lon=-86.0856&boundary.rect.max_lat=35.7251&boundary.rect.max_lon=-81.9499", + "httpVersion": "http/2.0", + "queryString": [ + { + "name": "text", + "value": "Opus%20M" + }, + { + "name": "layers", + "value": "address%2Cvenue%2Cstreet%2Cintersection" + }, + { + "name": "focus.point.lat", + "value": "33.749" + }, + { + "name": "focus.point.lon", + "value": "-84.388" + }, + { + "name": "boundary.rect.min_lat", + "value": "32.066" + }, + { + "name": "boundary.rect.min_lon", + "value": "-86.0856" + }, + { + "name": "boundary.rect.max_lat", + "value": "35.7251" + }, + { + "name": "boundary.rect.max_lon", + "value": "-81.9499" + } + ], + "headersSize": -1, + "bodySize": 0 + }, + "response": { + "status": 200, + "statusText": "", + "httpVersion": "http/2.0", + "content": { + "size": 0, + "mimeType": "application/json", + "text": "" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": -1, + "_transferSize": 3972, + "_error": null + }, + "serverIPAddress": "[64:ff9b::de1:2f3f]", + "startedDateTime": "2023-09-08T14:07:22.679Z", + "time": 1605.46499999964, + "timings": { + "blocked": 1227.7660000004744, + "dns": -1, + "ssl": -1, + "connect": -1, + "send": 2.2730000000001382, + "wait": 339.82599999991635, + "receive": 35.59999999924912, + "_blocked_queueing": 5.936000000474451 + } + }, + { + "request": { + "method": "GET", + "url": "http://localhost:9977/autocomplete?text=Opus%20Mu&layers=address%2Cvenue%2Cstreet%2Cintersection&focus.point.lat=33.749&focus.point.lon=-84.388&boundary.rect.min_lat=32.066&boundary.rect.min_lon=-86.0856&boundary.rect.max_lat=35.7251&boundary.rect.max_lon=-81.9499", + "httpVersion": "http/2.0", + "queryString": [ + { + "name": "text", + "value": "Opus%20Mu" + }, + { + "name": "layers", + "value": "address%2Cvenue%2Cstreet%2Cintersection" + }, + { + "name": "focus.point.lat", + "value": "33.749" + }, + { + "name": "focus.point.lon", + "value": "-84.388" + }, + { + "name": "boundary.rect.min_lat", + "value": "32.066" + }, + { + "name": "boundary.rect.min_lon", + "value": "-86.0856" + }, + { + "name": "boundary.rect.max_lat", + "value": "35.7251" + }, + { + "name": "boundary.rect.max_lon", + "value": "-81.9499" + } + ], + "headersSize": -1, + "bodySize": 0 + }, + "response": { + "status": 200, + "statusText": "", + "httpVersion": "http/2.0", + "content": { + "size": 0, + "mimeType": "application/json", + "text": "" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": -1, + "_transferSize": 2370, + "_error": null + }, + "serverIPAddress": "[64:ff9b::de1:2f3f]", + "startedDateTime": "2023-09-08T14:07:22.682Z", + "time": 1566.6149999997288, + "timings": { + "blocked": 1225.0449999998693, + "dns": -1, + "ssl": -1, + "connect": -1, + "send": 2.119999999999891, + "wait": 338.85400000000004, + "receive": 0.5959999998594867, + "_blocked_queueing": 3.5189999998692656 + } + }, + { + "request": { + "method": "GET", + "url": "http://localhost:9977/autocomplete?text=Opus%20Mus&layers=address%2Cvenue%2Cstreet%2Cintersection&focus.point.lat=33.749&focus.point.lon=-84.388&boundary.rect.min_lat=32.066&boundary.rect.min_lon=-86.0856&boundary.rect.max_lat=35.7251&boundary.rect.max_lon=-81.9499", + "httpVersion": "http/2.0", + "queryString": [ + { + "name": "text", + "value": "Opus%20Mus" + }, + { + "name": "layers", + "value": "address%2Cvenue%2Cstreet%2Cintersection" + }, + { + "name": "focus.point.lat", + "value": "33.749" + }, + { + "name": "focus.point.lon", + "value": "-84.388" + }, + { + "name": "boundary.rect.min_lat", + "value": "32.066" + }, + { + "name": "boundary.rect.min_lon", + "value": "-86.0856" + }, + { + "name": "boundary.rect.max_lat", + "value": "35.7251" + }, + { + "name": "boundary.rect.max_lon", + "value": "-81.9499" + } + ], + "headersSize": -1, + "bodySize": 0 + }, + "response": { + "status": 200, + "statusText": "", + "httpVersion": "http/2.0", + "content": { + "size": 0, + "mimeType": "application/json", + "text": "" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": -1, + "_transferSize": 2367, + "_error": null + }, + "serverIPAddress": "[64:ff9b::de1:2f3f]", + "startedDateTime": "2023-09-08T14:07:22.690Z", + "time": 2356.9259999994756, + "timings": { + "blocked": 1217.2119999999413, + "dns": -1, + "ssl": -1, + "connect": -1, + "send": 1.7999999999999545, + "wait": 1136.8809999999824, + "receive": 1.0329999995519756, + "_blocked_queueing": 4.3009999999412685 + } + }, + { + "request": { + "method": "GET", + "url": "http://localhost:9977/autocomplete?text=Opus%20Musi&layers=address%2Cvenue%2Cstreet%2Cintersection&focus.point.lat=33.749&focus.point.lon=-84.388&boundary.rect.min_lat=32.066&boundary.rect.min_lon=-86.0856&boundary.rect.max_lat=35.7251&boundary.rect.max_lon=-81.9499", + "httpVersion": "http/2.0", + "queryString": [ + { + "name": "text", + "value": "Opus%20Musi" + }, + { + "name": "layers", + "value": "address%2Cvenue%2Cstreet%2Cintersection" + }, + { + "name": "focus.point.lat", + "value": "33.749" + }, + { + "name": "focus.point.lon", + "value": "-84.388" + }, + { + "name": "boundary.rect.min_lat", + "value": "32.066" + }, + { + "name": "boundary.rect.min_lon", + "value": "-86.0856" + }, + { + "name": "boundary.rect.max_lat", + "value": "35.7251" + }, + { + "name": "boundary.rect.max_lon", + "value": "-81.9499" + } + ], + "headersSize": -1, + "bodySize": 0 + }, + "response": { + "status": 200, + "statusText": "", + "httpVersion": "http/2.0", + "content": { + "size": 0, + "mimeType": "application/json", + "text": "" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": -1, + "_transferSize": 2379, + "_error": null + }, + "serverIPAddress": "[64:ff9b::de1:2f3f]", + "startedDateTime": "2023-09-08T14:07:22.699Z", + "time": 2625.739999999496, + "timings": { + "blocked": 1208.077999999743, + "dns": -1, + "ssl": -1, + "connect": -1, + "send": 1.5919999999998709, + "wait": 1415.6090000001211, + "receive": 0.46099999963189475, + "_blocked_queueing": 3.523999999742955 + } + }, + { + "request": { + "method": "GET", + "url": "http://localhost:9977/autocomplete?text=Opus%20Music&layers=address%2Cvenue%2Cstreet%2Cintersection&focus.point.lat=33.749&focus.point.lon=-84.388&boundary.rect.min_lat=32.066&boundary.rect.min_lon=-86.0856&boundary.rect.max_lat=35.7251&boundary.rect.max_lon=-81.9499", + "httpVersion": "http/2.0", + "queryString": [ + { + "name": "text", + "value": "Opus%20Music" + }, + { + "name": "layers", + "value": "address%2Cvenue%2Cstreet%2Cintersection" + }, + { + "name": "focus.point.lat", + "value": "33.749" + }, + { + "name": "focus.point.lon", + "value": "-84.388" + }, + { + "name": "boundary.rect.min_lat", + "value": "32.066" + }, + { + "name": "boundary.rect.min_lon", + "value": "-86.0856" + }, + { + "name": "boundary.rect.max_lat", + "value": "35.7251" + }, + { + "name": "boundary.rect.max_lon", + "value": "-81.9499" + } + ], + "headersSize": -1, + "bodySize": 0 + }, + "response": { + "status": 200, + "statusText": "", + "httpVersion": "http/2.0", + "content": { + "size": 5231, + "mimeType": "application/json", + "text": "{\"geocoding\":{\"version\":\"0.2\",\"attribution\":\"https://geocode.earth/guidelines\",\"query\":{\"text\":\"Opus\",\"parser\":\"pelias\",\"parsed_text\":{\"subject\":\"Opus\"},\"size\":10,\"layers\":[\"address\",\"venue\",\"street\",\"intersection\"],\"sources\":[\"openstreetmap\",\"openaddresses\",\"geonames\",\"whosonfirst\",\"uscensus\"],\"private\":false,\"focus.point.lat\":33.749,\"focus.point.lon\":-84.388,\"boundary.rect.min_lat\":32.066,\"boundary.rect.max_lat\":35.7251,\"boundary.rect.min_lon\":-86.0856,\"boundary.rect.max_lon\":-81.9499,\"lang\":{\"name\":\"English\",\"iso6391\":\"en\",\"iso6393\":\"eng\",\"via\":\"default\",\"defaulted\":true},\"querySize\":20},\"engine\":{\"name\":\"Pelias\",\"author\":\"Mapzen\",\"version\":\"1.0\"},\"timestamp\":1694202052257},\"type\":\"FeatureCollection\",\"features\":[{\"type\":\"Feature\",\"geometry\":{\"type\":\"Point\",\"coordinates\":[-84.300178,33.77505]},\"properties\":{\"id\":\"node/556611976\",\"gid\":\"openstreetmap:venue:node/556611976\",\"layer\":\"venue\",\"source\":\"openstreetmap\",\"source_id\":\"node/556611976\",\"country_code\":\"US\",\"name\":\"Opus Music Store\",\"housenumber\":\"308D\",\"distance\":8.629,\"accuracy\":\"point\",\"country\":\"United States\",\"country_gid\":\"whosonfirst:country:85633793\",\"country_a\":\"USA\",\"region\":\"Georgia\",\"region_gid\":\"whosonfirst:region:85688535\",\"region_a\":\"GA\",\"county\":\"DeKalb County\",\"county_gid\":\"whosonfirst:county:102084539\",\"county_a\":\"DA\",\"locality\":\"Decatur\",\"locality_gid\":\"whosonfirst:locality:85936441\",\"continent\":\"North America\",\"continent_gid\":\"whosonfirst:continent:102191575\",\"label\":\"Opus Music Store, Decatur, GA, USA\",\"addendum\":{\"osm\":{\"website\":\"http://www.opusmusicstore.com/\",\"phone\":\"+1 404 370 0507\"}}}},{\"type\":\"Feature\",\"geometry\":{\"type\":\"Point\",\"coordinates\":[-84.385934,33.787145]},\"properties\":{\"id\":\"way/885660365\",\"gid\":\"openstreetmap:venue:way/885660365\",\"layer\":\"venue\",\"source\":\"openstreetmap\",\"source_id\":\"way/885660365\",\"country_code\":\"US\",\"name\":\"2 Opus Place (construction)\",\"distance\":4.251,\"accuracy\":\"point\",\"country\":\"United States\",\"country_gid\":\"whosonfirst:country:85633793\",\"country_a\":\"USA\",\"region\":\"Georgia\",\"region_gid\":\"whosonfirst:region:85688535\",\"region_a\":\"GA\",\"county\":\"Fulton County\",\"county_gid\":\"whosonfirst:county:102083603\",\"county_a\":\"FU\",\"locality\":\"Atlanta\",\"locality_gid\":\"whosonfirst:locality:85936429\",\"continent\":\"North America\",\"continent_gid\":\"whosonfirst:continent:102191575\",\"label\":\"2 Opus Place (construction), Atlanta, GA, USA\"},\"bbox\":[-84.3866911,33.7867611,-84.385266,33.7874624]},{\"type\":\"Feature\",\"geometry\":{\"type\":\"Point\",\"coordinates\":[-85.211688,35.00657]},\"properties\":{\"id\":\"way/51791114\",\"gid\":\"openstreetmap:venue:way/51791114\",\"layer\":\"venue\",\"source\":\"openstreetmap\",\"source_id\":\"way/51791114\",\"country_code\":\"US\",\"name\":\"Opus Inspection\",\"distance\":159.136,\"accuracy\":\"point\",\"country\":\"United States\",\"country_gid\":\"whosonfirst:country:85633793\",\"country_a\":\"USA\",\"region\":\"Tennessee\",\"region_gid\":\"whosonfirst:region:85688701\",\"region_a\":\"TN\",\"county\":\"Hamilton County\",\"county_gid\":\"whosonfirst:county:102087185\",\"county_a\":\"HL\",\"locality\":\"Chattanooga\",\"locality_gid\":\"whosonfirst:locality:101723043\",\"continent\":\"North America\",\"continent_gid\":\"whosonfirst:continent:102191575\",\"label\":\"Opus Inspection, Chattanooga, TN, USA\"},\"bbox\":[-85.2118453,35.0064715,-85.21153,35.0067042]},{\"type\":\"Feature\",\"geometry\":{\"type\":\"Point\",\"coordinates\":[-82.230045,33.55809]},\"properties\":{\"id\":\"w577848242-n5538625175-w577848271\",\"gid\":\"openstreetmap:intersection:w577848242-n5538625175-w577848271\",\"layer\":\"intersection\",\"source\":\"openstreetmap\",\"source_id\":\"w577848242-n5538625175-w577848271\",\"country_code\":\"US\",\"name\":\"Bent Creek Drive & Magnum Opus Way\",\"street\":\"Bent Creek Drive\",\"distance\":201.084,\"accuracy\":\"centroid\",\"country\":\"United States\",\"country_gid\":\"whosonfirst:country:85633793\",\"country_a\":\"USA\",\"region\":\"Georgia\",\"region_gid\":\"whosonfirst:region:85688535\",\"region_a\":\"GA\",\"county\":\"Columbia County\",\"county_gid\":\"whosonfirst:county:102082315\",\"county_a\":\"CI\",\"continent\":\"North America\",\"continent_gid\":\"whosonfirst:continent:102191575\",\"label\":\"Bent Creek Drive & Magnum Opus Way, Columbia County, GA, USA\"}},{\"type\":\"Feature\",\"geometry\":{\"type\":\"Point\",\"coordinates\":[-82.22882,33.559832]},\"properties\":{\"id\":\"polyline:18601022\",\"gid\":\"openstreetmap:street:polyline:18601022\",\"layer\":\"street\",\"source\":\"openstreetmap\",\"source_id\":\"polyline:18601022\",\"country_code\":\"US\",\"name\":\"Magnum Opus Way\",\"street\":\"Magnum Opus Way\",\"distance\":201.175,\"accuracy\":\"centroid\",\"country\":\"United States\",\"country_gid\":\"whosonfirst:country:85633793\",\"country_a\":\"USA\",\"region\":\"Georgia\",\"region_gid\":\"whosonfirst:region:85688535\",\"region_a\":\"GA\",\"county\":\"Columbia County\",\"county_gid\":\"whosonfirst:county:102082315\",\"county_a\":\"CI\",\"continent\":\"North America\",\"continent_gid\":\"whosonfirst:continent:102191575\",\"label\":\"Magnum Opus Way, Columbia County, GA, USA\"},\"bbox\":[-82.230045,33.55809,-82.227691,33.561696]}],\"bbox\":[-85.2118453,33.55809,-82.227691,35.0067042],\"isomorphicMapzenSearchQuery\":{\"api_key\":\"ge-0624346c114543d5\",\"text\":\"Opus\",\"layers\":\"address,venue,street,intersection\",\"focus.point.lat\":33.749,\"focus.point.lon\":-84.388,\"boundary.rect.min_lat\":32.066,\"boundary.rect.min_lon\":-86.0856,\"boundary.rect.max_lat\":35.7251,\"boundary.rect.max_lon\":-81.9499}}" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": -1, + "_transferSize": 2351, + "_error": null + }, + "serverIPAddress": "[64:ff9b::de1:2f3f]", + "startedDateTime": "2023-09-08T14:07:22.703Z", + "time": 2622.787999999673, + "timings": { + "blocked": 1203.8749999999998, + "dns": -1, + "ssl": -1, + "connect": -1, + "send": 1.731999999999971, + "wait": 1416.4810000000764, + "receive": 0.699999999596912, + "_blocked_queueing": 3.0169999999998254 + } + }, + + { + "request": { + "bodySize": 0, + "method": "GET", + "url": "http://localhost:9977/autocomplete?text=9&layers=address%2Cvenue%2Cstreet%2Cintersection&focus.point.lat=33.749&focus.point.lon=-84.388&boundary.rect.min_lat=32.066&boundary.rect.min_lon=-86.0856&boundary.rect.max_lat=35.7251&boundary.rect.max_lon=-81.9499", + "httpVersion": "", + "queryString": [ + { + "name": "text", + "value": "9" + }, + { + "name": "layers", + "value": "address,venue,street,intersection" + }, + { + "name": "focus.point.lat", + "value": "33.749" + }, + { + "name": "focus.point.lon", + "value": "-84.388" + }, + { + "name": "boundary.rect.min_lat", + "value": "32.066" + }, + { + "name": "boundary.rect.min_lon", + "value": "-86.0856" + }, + { + "name": "boundary.rect.max_lat", + "value": "35.7251" + }, + { + "name": "boundary.rect.max_lon", + "value": "-81.9499" + } + ], + "headersSize": 730 + }, + "response": { + "status": 0, + "statusText": "", + "httpVersion": "", + "content": { + "mimeType": "", + "size": 0, + "encoding": "base64", + "text": "" + }, + "redirectURL": "", + "headersSize": 0, + "bodySize": 0 + }, + "cache": {}, + "timings": { + "blocked": 0, + "dns": 0, + "connect": 0, + "ssl": 0, + "send": 0, + "wait": 0, + "receive": 0 + }, + "time": 0 + }, + { + "request": { + "bodySize": 0, + "method": "GET", + "url": "http://localhost:9977/autocomplete?text=90&layers=address%2Cvenue%2Cstreet%2Cintersection&focus.point.lat=33.749&focus.point.lon=-84.388&boundary.rect.min_lat=32.066&boundary.rect.min_lon=-86.0856&boundary.rect.max_lat=35.7251&boundary.rect.max_lon=-81.9499", + "httpVersion": "", + "queryString": [ + { + "name": "text", + "value": "90" + }, + { + "name": "layers", + "value": "address,venue,street,intersection" + }, + { + "name": "focus.point.lat", + "value": "33.749" + }, + { + "name": "focus.point.lon", + "value": "-84.388" + }, + { + "name": "boundary.rect.min_lat", + "value": "32.066" + }, + { + "name": "boundary.rect.min_lon", + "value": "-86.0856" + }, + { + "name": "boundary.rect.max_lat", + "value": "35.7251" + }, + { + "name": "boundary.rect.max_lon", + "value": "-81.9499" + } + ], + "headersSize": 731 + }, + "response": { + "status": 0, + "statusText": "", + "httpVersion": "", + "content": { + "mimeType": "", + "size": 0, + "encoding": "base64", + "text": "" + }, + "redirectURL": "", + "headersSize": 0, + "bodySize": 0 + }, + "cache": {}, + "timings": { + "blocked": 0, + "dns": 0, + "connect": 0, + "ssl": 0, + "send": 0, + "wait": 0, + "receive": 0 + }, + "time": 0 + }, + { + "request": { + "bodySize": 0, + "method": "GET", + "url": "http://localhost:9977/autocomplete?text=908&layers=address%2Cvenue%2Cstreet%2Cintersection&focus.point.lat=33.749&focus.point.lon=-84.388&boundary.rect.min_lat=32.066&boundary.rect.min_lon=-86.0856&boundary.rect.max_lat=35.7251&boundary.rect.max_lon=-81.9499", + "httpVersion": "", + "queryString": [ + { + "name": "text", + "value": "908" + }, + { + "name": "layers", + "value": "address,venue,street,intersection" + }, + { + "name": "focus.point.lat", + "value": "33.749" + }, + { + "name": "focus.point.lon", + "value": "-84.388" + }, + { + "name": "boundary.rect.min_lat", + "value": "32.066" + }, + { + "name": "boundary.rect.min_lon", + "value": "-86.0856" + }, + { + "name": "boundary.rect.max_lat", + "value": "35.7251" + }, + { + "name": "boundary.rect.max_lon", + "value": "-81.9499" + } + ], + "headersSize": 732 + }, + "response": { + "status": 0, + "statusText": "", + "httpVersion": "", + "content": { + "mimeType": "", + "size": 0, + "encoding": "base64", + "text": "" + }, + "redirectURL": "", + "headersSize": 0, + "bodySize": 0 + }, + "cache": {}, + "timings": { + "blocked": 0, + "dns": 0, + "connect": 0, + "ssl": 0, + "send": 0, + "wait": 0, + "receive": 0 + }, + "time": 0 + }, + { + "request": { + "bodySize": 0, + "method": "GET", + "url": "http://localhost:9977/autocomplete?text=9089&layers=address%2Cvenue%2Cstreet%2Cintersection&focus.point.lat=33.749&focus.point.lon=-84.388&boundary.rect.min_lat=32.066&boundary.rect.min_lon=-86.0856&boundary.rect.max_lat=35.7251&boundary.rect.max_lon=-81.9499", + "httpVersion": "", + "queryString": [ + { + "name": "text", + "value": "9089" + }, + { + "name": "layers", + "value": "address,venue,street,intersection" + }, + { + "name": "focus.point.lat", + "value": "33.749" + }, + { + "name": "focus.point.lon", + "value": "-84.388" + }, + { + "name": "boundary.rect.min_lat", + "value": "32.066" + }, + { + "name": "boundary.rect.min_lon", + "value": "-86.0856" + }, + { + "name": "boundary.rect.max_lat", + "value": "35.7251" + }, + { + "name": "boundary.rect.max_lon", + "value": "-81.9499" + } + ], + "headersSize": 733 + }, + "response": { + "status": 0, + "statusText": "", + "httpVersion": "", + "content": { + "mimeType": "", + "size": 0, + "encoding": "base64", + "text": "" + }, + "redirectURL": "", + "headersSize": 0, + "bodySize": 0 + }, + "cache": {}, + "timings": { + "blocked": 0, + "dns": 0, + "connect": 0, + "ssl": 0, + "send": 0, + "wait": 0, + "receive": 0 + }, + "time": 0 + }, + { + "request": { + "bodySize": 0, + "method": "GET", + "url": "http://localhost:9977/autocomplete?text=90898&layers=address%2Cvenue%2Cstreet%2Cintersection&focus.point.lat=33.749&focus.point.lon=-84.388&boundary.rect.min_lat=32.066&boundary.rect.min_lon=-86.0856&boundary.rect.max_lat=35.7251&boundary.rect.max_lon=-81.9499", + "httpVersion": "", + "queryString": [ + { + "name": "text", + "value": "90898" + }, + { + "name": "layers", + "value": "address,venue,street,intersection" + }, + { + "name": "focus.point.lat", + "value": "33.749" + }, + { + "name": "focus.point.lon", + "value": "-84.388" + }, + { + "name": "boundary.rect.min_lat", + "value": "32.066" + }, + { + "name": "boundary.rect.min_lon", + "value": "-86.0856" + }, + { + "name": "boundary.rect.max_lat", + "value": "35.7251" + }, + { + "name": "boundary.rect.max_lon", + "value": "-81.9499" + } + ], + "headersSize": 735 + }, + "response": { + "status": 0, + "statusText": "", + "httpVersion": "", + "content": { + "mimeType": "", + "size": 0, + "encoding": "base64", + "text": "" + }, + "redirectURL": "", + "headersSize": 0, + "bodySize": 0 + }, + "cache": {}, + "timings": { + "blocked": 0, + "dns": 0, + "connect": 0, + "ssl": 0, + "send": 0, + "wait": 0, + "receive": 0 + }, + "time": 0 + }, + { + "request": { + "bodySize": 0, + "method": "GET", + "url": "http://localhost:9977/autocomplete?text=908981&layers=address%2Cvenue%2Cstreet%2Cintersection&focus.point.lat=33.749&focus.point.lon=-84.388&boundary.rect.min_lat=32.066&boundary.rect.min_lon=-86.0856&boundary.rect.max_lat=35.7251&boundary.rect.max_lon=-81.9499", + "httpVersion": "HTTP/2", + "queryString": [ + { + "name": "text", + "value": "908981" + }, + { + "name": "layers", + "value": "address,venue,street,intersection" + }, + { + "name": "focus.point.lat", + "value": "33.749" + }, + { + "name": "focus.point.lon", + "value": "-84.388" + }, + { + "name": "boundary.rect.min_lat", + "value": "32.066" + }, + { + "name": "boundary.rect.min_lon", + "value": "-86.0856" + }, + { + "name": "boundary.rect.max_lat", + "value": "35.7251" + }, + { + "name": "boundary.rect.max_lon", + "value": "-81.9499" + } + ], + "headersSize": 736 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "HTTP/2", + "content": { + "mimeType": "application/json", + "size": 12687, + "text": "{\"features\":[{\"geometry\":{\"type\":\"Point\",\"coordinates\":[-84.391397,33.753837]},\"id\":\"MARTA:797\",\"properties\":{\"layer\":\"stops\",\"source\":\"otp\",\"name\":\"Five Points Station (908981)\",\"label\":\"Five Points Station (908981)\"},\"type\":\"Feature\"}],\"type\":\"FeatureCollection\"}" + }, + "redirectURL": "", + "headersSize": 547, + "bodySize": 13234 + }, + "cache": {}, + "timings": { + "blocked": 0, + "dns": 0, + "connect": 0, + "ssl": 0, + "send": 0, + "wait": 199, + "receive": 0 + }, + "time": 199 + } + ] + } +} \ No newline at end of file diff --git a/percy/percy.test.js b/percy/percy.test.js index e6862a86e..87b5b1ec3 100644 --- a/percy/percy.test.js +++ b/percy/percy.test.js @@ -53,7 +53,12 @@ beforeAll(async () => { // Launch mock geocoder server execa( 'yarn', - ['percy-har-express', '-p', '9977', 'percy/geocoder-mock.har'], + [ + 'percy-har-express', + '-p', + '9977', + `percy/geocoder-mock-${OTP_RR_UI_MODE}.har` + ], { signal: geocoderAbortController.signal } From 6870b139e50fe9be954879271489e0bf111bee49 Mon Sep 17 00:00:00 2001 From: binh-dam-ibigroup <56846598+binh-dam-ibigroup@users.noreply.github.com> Date: Fri, 8 Sep 2023 16:16:46 -0400 Subject: [PATCH 05/13] test(percy): Remove sv info from mocks --- percy/geocoder-mock-calltaker.har | 11 ----------- percy/geocoder-mock-normal.har | 10 ---------- percy/mock.har | 23 ----------------------- 3 files changed, 44 deletions(-) diff --git a/percy/geocoder-mock-calltaker.har b/percy/geocoder-mock-calltaker.har index 447fc319f..0a93718b8 100644 --- a/percy/geocoder-mock-calltaker.har +++ b/percy/geocoder-mock-calltaker.har @@ -64,7 +64,6 @@ "_transferSize": 12109, "_error": null }, - "serverIPAddress": "[64:ff9b::d21:40f]", "startedDateTime": "2023-09-08T13:53:49.885Z", "time": 449.04499999984364, "timings": { @@ -135,7 +134,6 @@ "_transferSize": 11081, "_error": null }, - "serverIPAddress": "[64:ff9b::d21:40f]", "startedDateTime": "2023-09-08T13:53:49.902Z", "time": 804.0409999994154, "timings": { @@ -206,7 +204,6 @@ "_transferSize": 11253, "_error": null }, - "serverIPAddress": "[64:ff9b::d21:40f]", "startedDateTime": "2023-09-08T13:53:49.909Z", "time": 1204.160999999658, "timings": { @@ -277,7 +274,6 @@ "_transferSize": 12769, "_error": null }, - "serverIPAddress": "[64:ff9b::d21:40f]", "startedDateTime": "2023-09-08T13:53:49.917Z", "time": 313.9339999997901, "timings": { @@ -348,7 +344,6 @@ "_transferSize": 12768, "_error": null }, - "serverIPAddress": "[64:ff9b::d21:40f]", "startedDateTime": "2023-09-08T13:53:49.923Z", "time": 1060.0050000002739, "timings": { @@ -419,7 +414,6 @@ "_transferSize": 11016, "_error": null }, - "serverIPAddress": "[64:ff9b::d21:40f]", "startedDateTime": "2023-09-08T13:53:49.932Z", "time": 812.2540000003937, "timings": { @@ -490,7 +484,6 @@ "_transferSize": 11006, "_error": null }, - "serverIPAddress": "[64:ff9b::d21:40f]", "startedDateTime": "2023-09-08T13:53:49.938Z", "time": 1667.8229999997711, "timings": { @@ -561,7 +554,6 @@ "_transferSize": 11011, "_error": null }, - "serverIPAddress": "[64:ff9b::d21:40f]", "startedDateTime": "2023-09-08T13:53:49.950Z", "time": 1307.301999999254, "timings": { @@ -632,7 +624,6 @@ "_transferSize": 11016, "_error": null }, - "serverIPAddress": "[64:ff9b::d21:40f]", "startedDateTime": "2023-09-08T13:53:49.958Z", "time": 746.1700000003475, "timings": { @@ -703,7 +694,6 @@ "_transferSize": 11020, "_error": null }, - "serverIPAddress": "[64:ff9b::d21:40f]", "startedDateTime": "2023-09-08T13:53:49.967Z", "time": 1989.0759999998409, "timings": { @@ -774,7 +764,6 @@ "_transferSize": 12959, "_error": null }, - "serverIPAddress": "[64:ff9b::d21:40f]", "startedDateTime": "2023-09-08T13:53:49.974Z", "time": 1773.866000000453, "timings": { diff --git a/percy/geocoder-mock-normal.har b/percy/geocoder-mock-normal.har index 5d6763cd2..39164fea8 100644 --- a/percy/geocoder-mock-normal.har +++ b/percy/geocoder-mock-normal.har @@ -64,7 +64,6 @@ "_transferSize": 12785, "_error": null }, - "serverIPAddress": "[64:ff9b::de1:2f3f]", "startedDateTime": "2023-09-08T14:07:22.644Z", "time": 2125.9739999999583, "timings": { @@ -135,7 +134,6 @@ "_transferSize": 11262, "_error": null }, - "serverIPAddress": "[64:ff9b::de1:2f3f]", "startedDateTime": "2023-09-08T14:07:22.656Z", "time": 2307.477999999719, "timings": { @@ -206,7 +204,6 @@ "_transferSize": 5615, "_error": null }, - "serverIPAddress": "[64:ff9b::de1:2f3f]", "startedDateTime": "2023-09-08T14:07:22.663Z", "time": 2034.0139999998428, "timings": { @@ -277,7 +274,6 @@ "_transferSize": 5619, "_error": null }, - "serverIPAddress": "[64:ff9b::de1:2f3f]", "startedDateTime": "2023-09-08T14:07:22.666Z", "time": 1865.16599999959, "timings": { @@ -348,7 +344,6 @@ "_transferSize": 5621, "_error": null }, - "serverIPAddress": "[64:ff9b::de1:2f3f]", "startedDateTime": "2023-09-08T14:07:22.676Z", "time": 2317.60100000065, "timings": { @@ -419,7 +414,6 @@ "_transferSize": 3972, "_error": null }, - "serverIPAddress": "[64:ff9b::de1:2f3f]", "startedDateTime": "2023-09-08T14:07:22.679Z", "time": 1605.46499999964, "timings": { @@ -490,7 +484,6 @@ "_transferSize": 2370, "_error": null }, - "serverIPAddress": "[64:ff9b::de1:2f3f]", "startedDateTime": "2023-09-08T14:07:22.682Z", "time": 1566.6149999997288, "timings": { @@ -561,7 +554,6 @@ "_transferSize": 2367, "_error": null }, - "serverIPAddress": "[64:ff9b::de1:2f3f]", "startedDateTime": "2023-09-08T14:07:22.690Z", "time": 2356.9259999994756, "timings": { @@ -632,7 +624,6 @@ "_transferSize": 2379, "_error": null }, - "serverIPAddress": "[64:ff9b::de1:2f3f]", "startedDateTime": "2023-09-08T14:07:22.699Z", "time": 2625.739999999496, "timings": { @@ -703,7 +694,6 @@ "_transferSize": 2351, "_error": null }, - "serverIPAddress": "[64:ff9b::de1:2f3f]", "startedDateTime": "2023-09-08T14:07:22.703Z", "time": 2622.787999999673, "timings": { diff --git a/percy/mock.har b/percy/mock.har index 64f8ee2a4..168b2f6c5 100644 --- a/percy/mock.har +++ b/percy/mock.har @@ -35,7 +35,6 @@ "_transferSize": 9618, "_error": null }, - "serverIPAddress": "23.22.4.67", "startedDateTime": "2023-08-09T14:44:09.561Z", "time": 221.89399999479065, "timings": { @@ -77,7 +76,6 @@ "_transferSize": 9618, "_error": null }, - "serverIPAddress": "23.22.4.67", "startedDateTime": "2023-08-09T14:44:09.561Z", "time": 221.89399999479065, "timings": { @@ -119,7 +117,6 @@ "_transferSize": 76937, "_error": null }, - "serverIPAddress": "35.173.73.127", "startedDateTime": "2023-08-03T20:49:50.033Z", "time": 590.6560000003083, "timings": { @@ -161,7 +158,6 @@ "_transferSize": 7340, "_error": null }, - "serverIPAddress": "35.173.73.127", "startedDateTime": "2023-08-03T20:49:50.036Z", "time": 257.49999999970896, "timings": { @@ -203,7 +199,6 @@ "_transferSize": 40856, "_error": null }, - "serverIPAddress": "52.20.220.65", "startedDateTime": "2023-08-04T20:40:31.694Z", "time": 82.74900000105845, "timings": { @@ -241,7 +236,6 @@ "_transferSize": 5438, "_error": null }, - "serverIPAddress": "3.222.122.125", "startedDateTime": "2023-08-04T20:59:03.536Z", "time": 54.81599999620812, "timings": { @@ -279,7 +273,6 @@ "_transferSize": 38256, "_error": null }, - "serverIPAddress": "3.222.122.125", "startedDateTime": "2023-08-04T20:59:03.536Z", "time": 60.42699999670731, "timings": { @@ -321,7 +314,6 @@ "_transferSize": 2433, "_error": null }, - "serverIPAddress": "34.195.110.47", "startedDateTime": "2023-08-04T21:29:23.087Z", "time": 66.22100000095088, "timings": { @@ -368,7 +360,6 @@ "_transferSize": 1604, "_error": null }, - "serverIPAddress": "34.195.110.47", "startedDateTime": "2023-08-04T21:29:23.171Z", "time": 51.44000000291271, "timings": { @@ -410,7 +401,6 @@ "_transferSize": 2002, "_error": null }, - "serverIPAddress": "34.195.110.47", "startedDateTime": "2023-08-04T21:29:23.176Z", "time": 58.54399999952875, "timings": { @@ -452,7 +442,6 @@ "_transferSize": 7459, "_error": null }, - "serverIPAddress": "34.195.110.47", "startedDateTime": "2023-08-04T21:29:23.177Z", "time": 57.214999993448146, "timings": { @@ -495,7 +484,6 @@ "_transferSize": 27049, "_error": null }, - "serverIPAddress": "34.238.57.75", "startedDateTime": "2023-08-07T19:09:16.223Z", "time": 66.91099999807193, "timings": { @@ -537,7 +525,6 @@ "_transferSize": 33935, "_error": null }, - "serverIPAddress": "44.207.110.234", "startedDateTime": "2023-08-07T19:49:43.900Z", "time": 168.25500000049942, "timings": { @@ -596,7 +583,6 @@ "_transferSize": 1191061, "_error": null }, - "serverIPAddress": "3.232.128.121", "startedDateTime": "2023-08-07T21:13:12.901Z", "time": 327.1550000026764, "timings": { @@ -638,7 +624,6 @@ "_transferSize": 25417, "_error": null }, - "serverIPAddress": "54.86.250.244", "startedDateTime": "2023-08-07T20:31:47.159Z", "time": 305.05600000105915, "timings": { @@ -680,7 +665,6 @@ "_transferSize": 1077, "_error": null }, - "serverIPAddress": "3.220.60.180", "startedDateTime": "2023-08-08T20:29:50.871Z", "time": 62.50199999703909, "timings": { @@ -722,7 +706,6 @@ "_transferSize": 1077, "_error": null }, - "serverIPAddress": "3.220.60.180", "startedDateTime": "2023-08-08T20:29:50.871Z", "time": 62.50199999703909, "timings": { @@ -764,7 +747,6 @@ "_transferSize": 1077, "_error": null }, - "serverIPAddress": "3.220.60.180", "startedDateTime": "2023-08-08T20:29:50.871Z", "time": 62.50199999703909, "timings": { @@ -806,7 +788,6 @@ "_transferSize": 1077, "_error": null }, - "serverIPAddress": "3.220.60.180", "startedDateTime": "2023-08-08T20:29:50.871Z", "time": 62.50199999703909, "timings": { @@ -848,7 +829,6 @@ "_transferSize": 31570, "_error": null }, - "serverIPAddress": "3.220.60.180", "startedDateTime": "2023-08-08T14:50:06.820Z", "time": 189.288999999917, "timings": { @@ -885,7 +865,6 @@ "_transferSize": 21813, "_error": null }, - "serverIPAddress": "3.220.60.180", "startedDateTime": "2023-08-08T14:50:06.819Z", "time": 185.85299999995186, "timings": { @@ -927,7 +906,6 @@ "_transferSize": 4511, "_error": null }, - "serverIPAddress": "3.220.60.180", "startedDateTime": "2023-08-08T14:50:07.079Z", "time": 57.98200000026554, "timings": { @@ -969,7 +947,6 @@ "_transferSize": 43200, "_error": null }, - "serverIPAddress": "3.220.60.180", "startedDateTime": "2023-08-08T14:50:07.080Z", "time": 65.15599999966071, "timings": { From 10e612a0eb46c90cb7ef902925672ee04415216f Mon Sep 17 00:00:00 2001 From: binh-dam-ibigroup <56846598+binh-dam-ibigroup@users.noreply.github.com> Date: Fri, 8 Sep 2023 18:04:06 -0400 Subject: [PATCH 06/13] test(percy): Tighten up mocks --- percy/geocoder-mock-calltaker.har | 20 +++---- percy/geocoder-mock-normal.har | 99 ++++++++++++------------------- 2 files changed, 49 insertions(+), 70 deletions(-) diff --git a/percy/geocoder-mock-calltaker.har b/percy/geocoder-mock-calltaker.har index 0a93718b8..895bf6a9b 100644 --- a/percy/geocoder-mock-calltaker.har +++ b/percy/geocoder-mock-calltaker.har @@ -56,7 +56,7 @@ "content": { "size": 11710, "mimeType": "application/json", - "text": "" + "text": "{\"features\":[]}" }, "redirectURL": "", "headersSize": -1, @@ -126,7 +126,7 @@ "content": { "size": 0, "mimeType": "application/json", - "text": "" + "text": "{\"features\":[]}" }, "redirectURL": "", "headersSize": -1, @@ -196,7 +196,7 @@ "content": { "size": 0, "mimeType": "application/json", - "text": "" + "text": "{\"features\":[]}" }, "redirectURL": "", "headersSize": -1, @@ -266,7 +266,7 @@ "content": { "size": 0, "mimeType": "application/json", - "text": "" + "text": "{\"features\":[]}" }, "redirectURL": "", "headersSize": -1, @@ -336,7 +336,7 @@ "content": { "size": 0, "mimeType": "application/json", - "text": "" + "text": "{\"features\":[]}" }, "redirectURL": "", "headersSize": -1, @@ -406,7 +406,7 @@ "content": { "size": 0, "mimeType": "application/json", - "text": "" + "text": "{\"features\":[]}" }, "redirectURL": "", "headersSize": -1, @@ -476,7 +476,7 @@ "content": { "size": 0, "mimeType": "application/json", - "text": "" + "text": "{\"features\":[]}" }, "redirectURL": "", "headersSize": -1, @@ -546,7 +546,7 @@ "content": { "size": 0, "mimeType": "application/json", - "text": "" + "text": "{\"features\":[]}" }, "redirectURL": "", "headersSize": -1, @@ -616,7 +616,7 @@ "content": { "size": 0, "mimeType": "application/json", - "text": "" + "text": "{\"features\":[]}" }, "redirectURL": "", "headersSize": -1, @@ -686,7 +686,7 @@ "content": { "size": 0, "mimeType": "application/json", - "text": "" + "text": "{\"features\":[]}" }, "redirectURL": "", "headersSize": -1, diff --git a/percy/geocoder-mock-normal.har b/percy/geocoder-mock-normal.har index 39164fea8..e33efa664 100644 --- a/percy/geocoder-mock-normal.har +++ b/percy/geocoder-mock-normal.har @@ -56,9 +56,8 @@ "content": { "size": 0, "mimeType": "application/json", - "text": "" + "text": "{\"features\":[]}" }, - "redirectURL": "", "headersSize": -1, "bodySize": -1, "_transferSize": 12785, @@ -126,9 +125,8 @@ "content": { "size": 0, "mimeType": "application/json", - "text": "" + "text": "{\"features\":[]}" }, - "redirectURL": "", "headersSize": -1, "bodySize": -1, "_transferSize": 11262, @@ -196,9 +194,8 @@ "content": { "size": 0, "mimeType": "application/json", - "text": "" + "text": "{\"features\":[]}" }, - "redirectURL": "", "headersSize": -1, "bodySize": -1, "_transferSize": 5615, @@ -266,9 +263,8 @@ "content": { "size": 0, "mimeType": "application/json", - "text": "" + "text": "{\"features\":[]}" }, - "redirectURL": "", "headersSize": -1, "bodySize": -1, "_transferSize": 5619, @@ -336,9 +332,8 @@ "content": { "size": 0, "mimeType": "application/json", - "text": "" + "text": "{\"features\":[]}" }, - "redirectURL": "", "headersSize": -1, "bodySize": -1, "_transferSize": 5621, @@ -406,9 +401,8 @@ "content": { "size": 0, "mimeType": "application/json", - "text": "" + "text": "{\"features\":[]}" }, - "redirectURL": "", "headersSize": -1, "bodySize": -1, "_transferSize": 3972, @@ -476,9 +470,8 @@ "content": { "size": 0, "mimeType": "application/json", - "text": "" + "text": "{\"features\":[]}" }, - "redirectURL": "", "headersSize": -1, "bodySize": -1, "_transferSize": 2370, @@ -546,9 +539,8 @@ "content": { "size": 0, "mimeType": "application/json", - "text": "" + "text": "{\"features\":[]}" }, - "redirectURL": "", "headersSize": -1, "bodySize": -1, "_transferSize": 2367, @@ -616,9 +608,8 @@ "content": { "size": 0, "mimeType": "application/json", - "text": "" + "text": "{\"features\":[]}" }, - "redirectURL": "", "headersSize": -1, "bodySize": -1, "_transferSize": 2379, @@ -688,7 +679,6 @@ "mimeType": "application/json", "text": "{\"geocoding\":{\"version\":\"0.2\",\"attribution\":\"https://geocode.earth/guidelines\",\"query\":{\"text\":\"Opus\",\"parser\":\"pelias\",\"parsed_text\":{\"subject\":\"Opus\"},\"size\":10,\"layers\":[\"address\",\"venue\",\"street\",\"intersection\"],\"sources\":[\"openstreetmap\",\"openaddresses\",\"geonames\",\"whosonfirst\",\"uscensus\"],\"private\":false,\"focus.point.lat\":33.749,\"focus.point.lon\":-84.388,\"boundary.rect.min_lat\":32.066,\"boundary.rect.max_lat\":35.7251,\"boundary.rect.min_lon\":-86.0856,\"boundary.rect.max_lon\":-81.9499,\"lang\":{\"name\":\"English\",\"iso6391\":\"en\",\"iso6393\":\"eng\",\"via\":\"default\",\"defaulted\":true},\"querySize\":20},\"engine\":{\"name\":\"Pelias\",\"author\":\"Mapzen\",\"version\":\"1.0\"},\"timestamp\":1694202052257},\"type\":\"FeatureCollection\",\"features\":[{\"type\":\"Feature\",\"geometry\":{\"type\":\"Point\",\"coordinates\":[-84.300178,33.77505]},\"properties\":{\"id\":\"node/556611976\",\"gid\":\"openstreetmap:venue:node/556611976\",\"layer\":\"venue\",\"source\":\"openstreetmap\",\"source_id\":\"node/556611976\",\"country_code\":\"US\",\"name\":\"Opus Music Store\",\"housenumber\":\"308D\",\"distance\":8.629,\"accuracy\":\"point\",\"country\":\"United States\",\"country_gid\":\"whosonfirst:country:85633793\",\"country_a\":\"USA\",\"region\":\"Georgia\",\"region_gid\":\"whosonfirst:region:85688535\",\"region_a\":\"GA\",\"county\":\"DeKalb County\",\"county_gid\":\"whosonfirst:county:102084539\",\"county_a\":\"DA\",\"locality\":\"Decatur\",\"locality_gid\":\"whosonfirst:locality:85936441\",\"continent\":\"North America\",\"continent_gid\":\"whosonfirst:continent:102191575\",\"label\":\"Opus Music Store, Decatur, GA, USA\",\"addendum\":{\"osm\":{\"website\":\"http://www.opusmusicstore.com/\",\"phone\":\"+1 404 370 0507\"}}}},{\"type\":\"Feature\",\"geometry\":{\"type\":\"Point\",\"coordinates\":[-84.385934,33.787145]},\"properties\":{\"id\":\"way/885660365\",\"gid\":\"openstreetmap:venue:way/885660365\",\"layer\":\"venue\",\"source\":\"openstreetmap\",\"source_id\":\"way/885660365\",\"country_code\":\"US\",\"name\":\"2 Opus Place (construction)\",\"distance\":4.251,\"accuracy\":\"point\",\"country\":\"United States\",\"country_gid\":\"whosonfirst:country:85633793\",\"country_a\":\"USA\",\"region\":\"Georgia\",\"region_gid\":\"whosonfirst:region:85688535\",\"region_a\":\"GA\",\"county\":\"Fulton County\",\"county_gid\":\"whosonfirst:county:102083603\",\"county_a\":\"FU\",\"locality\":\"Atlanta\",\"locality_gid\":\"whosonfirst:locality:85936429\",\"continent\":\"North America\",\"continent_gid\":\"whosonfirst:continent:102191575\",\"label\":\"2 Opus Place (construction), Atlanta, GA, USA\"},\"bbox\":[-84.3866911,33.7867611,-84.385266,33.7874624]},{\"type\":\"Feature\",\"geometry\":{\"type\":\"Point\",\"coordinates\":[-85.211688,35.00657]},\"properties\":{\"id\":\"way/51791114\",\"gid\":\"openstreetmap:venue:way/51791114\",\"layer\":\"venue\",\"source\":\"openstreetmap\",\"source_id\":\"way/51791114\",\"country_code\":\"US\",\"name\":\"Opus Inspection\",\"distance\":159.136,\"accuracy\":\"point\",\"country\":\"United States\",\"country_gid\":\"whosonfirst:country:85633793\",\"country_a\":\"USA\",\"region\":\"Tennessee\",\"region_gid\":\"whosonfirst:region:85688701\",\"region_a\":\"TN\",\"county\":\"Hamilton County\",\"county_gid\":\"whosonfirst:county:102087185\",\"county_a\":\"HL\",\"locality\":\"Chattanooga\",\"locality_gid\":\"whosonfirst:locality:101723043\",\"continent\":\"North America\",\"continent_gid\":\"whosonfirst:continent:102191575\",\"label\":\"Opus Inspection, Chattanooga, TN, USA\"},\"bbox\":[-85.2118453,35.0064715,-85.21153,35.0067042]},{\"type\":\"Feature\",\"geometry\":{\"type\":\"Point\",\"coordinates\":[-82.230045,33.55809]},\"properties\":{\"id\":\"w577848242-n5538625175-w577848271\",\"gid\":\"openstreetmap:intersection:w577848242-n5538625175-w577848271\",\"layer\":\"intersection\",\"source\":\"openstreetmap\",\"source_id\":\"w577848242-n5538625175-w577848271\",\"country_code\":\"US\",\"name\":\"Bent Creek Drive & Magnum Opus Way\",\"street\":\"Bent Creek Drive\",\"distance\":201.084,\"accuracy\":\"centroid\",\"country\":\"United States\",\"country_gid\":\"whosonfirst:country:85633793\",\"country_a\":\"USA\",\"region\":\"Georgia\",\"region_gid\":\"whosonfirst:region:85688535\",\"region_a\":\"GA\",\"county\":\"Columbia County\",\"county_gid\":\"whosonfirst:county:102082315\",\"county_a\":\"CI\",\"continent\":\"North America\",\"continent_gid\":\"whosonfirst:continent:102191575\",\"label\":\"Bent Creek Drive & Magnum Opus Way, Columbia County, GA, USA\"}},{\"type\":\"Feature\",\"geometry\":{\"type\":\"Point\",\"coordinates\":[-82.22882,33.559832]},\"properties\":{\"id\":\"polyline:18601022\",\"gid\":\"openstreetmap:street:polyline:18601022\",\"layer\":\"street\",\"source\":\"openstreetmap\",\"source_id\":\"polyline:18601022\",\"country_code\":\"US\",\"name\":\"Magnum Opus Way\",\"street\":\"Magnum Opus Way\",\"distance\":201.175,\"accuracy\":\"centroid\",\"country\":\"United States\",\"country_gid\":\"whosonfirst:country:85633793\",\"country_a\":\"USA\",\"region\":\"Georgia\",\"region_gid\":\"whosonfirst:region:85688535\",\"region_a\":\"GA\",\"county\":\"Columbia County\",\"county_gid\":\"whosonfirst:county:102082315\",\"county_a\":\"CI\",\"continent\":\"North America\",\"continent_gid\":\"whosonfirst:continent:102191575\",\"label\":\"Magnum Opus Way, Columbia County, GA, USA\"},\"bbox\":[-82.230045,33.55809,-82.227691,33.561696]}],\"bbox\":[-85.2118453,33.55809,-82.227691,35.0067042],\"isomorphicMapzenSearchQuery\":{\"api_key\":\"ge-0624346c114543d5\",\"text\":\"Opus\",\"layers\":\"address,venue,street,intersection\",\"focus.point.lat\":33.749,\"focus.point.lon\":-84.388,\"boundary.rect.min_lat\":32.066,\"boundary.rect.min_lon\":-86.0856,\"boundary.rect.max_lat\":35.7251,\"boundary.rect.max_lon\":-81.9499}}" }, - "redirectURL": "", "headersSize": -1, "bodySize": -1, "_transferSize": 2351, @@ -713,7 +703,7 @@ "bodySize": 0, "method": "GET", "url": "http://localhost:9977/autocomplete?text=9&layers=address%2Cvenue%2Cstreet%2Cintersection&focus.point.lat=33.749&focus.point.lon=-84.388&boundary.rect.min_lat=32.066&boundary.rect.min_lon=-86.0856&boundary.rect.max_lat=35.7251&boundary.rect.max_lon=-81.9499", - "httpVersion": "", + "httpVersion": "HTTP/2", "queryString": [ { "name": "text", @@ -751,16 +741,14 @@ "headersSize": 730 }, "response": { - "status": 0, - "statusText": "", - "httpVersion": "", + "status": 200, + "statusText": "OK", + "httpVersion": "HTTP/2", "content": { - "mimeType": "", + "mimeType": "application/json", "size": 0, - "encoding": "base64", - "text": "" + "text": "{\"features\":[]}" }, - "redirectURL": "", "headersSize": 0, "bodySize": 0 }, @@ -781,7 +769,7 @@ "bodySize": 0, "method": "GET", "url": "http://localhost:9977/autocomplete?text=90&layers=address%2Cvenue%2Cstreet%2Cintersection&focus.point.lat=33.749&focus.point.lon=-84.388&boundary.rect.min_lat=32.066&boundary.rect.min_lon=-86.0856&boundary.rect.max_lat=35.7251&boundary.rect.max_lon=-81.9499", - "httpVersion": "", + "httpVersion": "HTTP/2", "queryString": [ { "name": "text", @@ -819,16 +807,14 @@ "headersSize": 731 }, "response": { - "status": 0, - "statusText": "", - "httpVersion": "", + "status": 200, + "statusText": "OK", + "httpVersion": "HTTP/2", "content": { - "mimeType": "", + "mimeType": "application/json", "size": 0, - "encoding": "base64", - "text": "" + "text": "{\"features\":[]}" }, - "redirectURL": "", "headersSize": 0, "bodySize": 0 }, @@ -849,7 +835,7 @@ "bodySize": 0, "method": "GET", "url": "http://localhost:9977/autocomplete?text=908&layers=address%2Cvenue%2Cstreet%2Cintersection&focus.point.lat=33.749&focus.point.lon=-84.388&boundary.rect.min_lat=32.066&boundary.rect.min_lon=-86.0856&boundary.rect.max_lat=35.7251&boundary.rect.max_lon=-81.9499", - "httpVersion": "", + "httpVersion": "HTTP/2", "queryString": [ { "name": "text", @@ -887,16 +873,14 @@ "headersSize": 732 }, "response": { - "status": 0, - "statusText": "", - "httpVersion": "", + "status": 200, + "statusText": "OK", + "httpVersion": "HTTP/2", "content": { - "mimeType": "", + "mimeType": "application/json", "size": 0, - "encoding": "base64", - "text": "" + "text": "{\"features\":[]}" }, - "redirectURL": "", "headersSize": 0, "bodySize": 0 }, @@ -917,7 +901,7 @@ "bodySize": 0, "method": "GET", "url": "http://localhost:9977/autocomplete?text=9089&layers=address%2Cvenue%2Cstreet%2Cintersection&focus.point.lat=33.749&focus.point.lon=-84.388&boundary.rect.min_lat=32.066&boundary.rect.min_lon=-86.0856&boundary.rect.max_lat=35.7251&boundary.rect.max_lon=-81.9499", - "httpVersion": "", + "httpVersion": "HTTP/2", "queryString": [ { "name": "text", @@ -955,16 +939,14 @@ "headersSize": 733 }, "response": { - "status": 0, - "statusText": "", - "httpVersion": "", + "status": 200, + "statusText": "OK", + "httpVersion": "HTTP/2", "content": { - "mimeType": "", + "mimeType": "application/json", "size": 0, - "encoding": "base64", - "text": "" + "text": "{\"features\":[]}" }, - "redirectURL": "", "headersSize": 0, "bodySize": 0 }, @@ -985,7 +967,7 @@ "bodySize": 0, "method": "GET", "url": "http://localhost:9977/autocomplete?text=90898&layers=address%2Cvenue%2Cstreet%2Cintersection&focus.point.lat=33.749&focus.point.lon=-84.388&boundary.rect.min_lat=32.066&boundary.rect.min_lon=-86.0856&boundary.rect.max_lat=35.7251&boundary.rect.max_lon=-81.9499", - "httpVersion": "", + "httpVersion": "HTTP/2", "queryString": [ { "name": "text", @@ -1023,16 +1005,14 @@ "headersSize": 735 }, "response": { - "status": 0, - "statusText": "", - "httpVersion": "", + "status": 200, + "statusText": "OK", + "httpVersion": "HTTP/2", "content": { - "mimeType": "", + "mimeType": "application/json", "size": 0, - "encoding": "base64", - "text": "" + "text": "{\"features\":[]}" }, - "redirectURL": "", "headersSize": 0, "bodySize": 0 }, @@ -1099,7 +1079,6 @@ "size": 12687, "text": "{\"features\":[{\"geometry\":{\"type\":\"Point\",\"coordinates\":[-84.391397,33.753837]},\"id\":\"MARTA:797\",\"properties\":{\"layer\":\"stops\",\"source\":\"otp\",\"name\":\"Five Points Station (908981)\",\"label\":\"Five Points Station (908981)\"},\"type\":\"Feature\"}],\"type\":\"FeatureCollection\"}" }, - "redirectURL": "", "headersSize": 547, "bodySize": 13234 }, From c331c12f4c1b0bc028c82455fb3fc912394a0724 Mon Sep 17 00:00:00 2001 From: binh-dam-ibigroup <56846598+binh-dam-ibigroup@users.noreply.github.com> Date: Fri, 8 Sep 2023 18:05:40 -0400 Subject: [PATCH 07/13] test(percy): Add delay between location keystrokes --- percy/percy.test.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/percy/percy.test.js b/percy/percy.test.js index 87b5b1ec3..5c2f07931 100644 --- a/percy/percy.test.js +++ b/percy/percy.test.js @@ -170,7 +170,7 @@ async function executeTest(page, isMobile, isCallTaker) { await page.hover('.from-form-control') await page.focus('.from-form-control') // FIXME: Characters are typed very fast, but each stroke still triggers a geocoder call. - await page.keyboard.type('Opus Music') + await page.keyboard.type('Opus Music', { delay: 100 }) await page.waitForTimeout(2000) await page.keyboard.press('ArrowDown') await page.waitForTimeout(200) @@ -179,7 +179,7 @@ async function executeTest(page, isMobile, isCallTaker) { // Fill in new destination await page.focus('.to-form-control') // FIXME: Characters are typed very fast, but each stroke still triggers a geocoder call. - await page.keyboard.type('908981') + await page.keyboard.type('908981', { delay: 100 }) await page.waitForTimeout(2000) await page.keyboard.press('ArrowDown') await page.waitForTimeout(200) @@ -215,7 +215,7 @@ async function executeTest(page, isMobile, isCallTaker) { await page.waitForSelector('.intermediate-place-0-form-control') await page.focus('.intermediate-place-0-form-control') // FIXME: Characters are typed very fast, but each stroke still triggers a geocoder call. - await page.keyboard.type('arts center') + await page.keyboard.type('arts center', { delay: 100 }) await page.waitForTimeout(2000) await page.keyboard.press('ArrowDown') await page.waitForTimeout(200) From e1dda38aafd528aa3584e5e82c85bf53c9eeb4e7 Mon Sep 17 00:00:00 2001 From: binh-dam-ibigroup <56846598+binh-dam-ibigroup@users.noreply.github.com> Date: Tue, 12 Sep 2023 16:02:09 -0400 Subject: [PATCH 08/13] ci(percy): Use new config that uses mock geocoder --- .github/workflows/percy.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/percy.yml b/.github/workflows/percy.yml index 957eafc81..3f12e171a 100644 --- a/.github/workflows/percy.yml +++ b/.github/workflows/percy.yml @@ -25,7 +25,7 @@ jobs: - name: Download OTP2 config file run: curl $PERCY_OTP2_CONFIG_URL --output /tmp/otp2config.yml env: - PERCY_OTP2_CONFIG_URL: ${{ secrets.PERCY_MOCKOTP2_CONFIG_URL_METRO_MODE_SELECTOR }} + PERCY_OTP2_CONFIG_URL: ${{ secrets.PERCY_MOCK_OTP2_GEOCODER_CONFIG }} - name: Build OTP-RR # Artifacts are shared between desktop and mobile tests (but not call-taker). run: yarn build From 56a230be2189b7f0867aa5ff1abdddebe85f36ed Mon Sep 17 00:00:00 2001 From: binh-dam-ibigroup <56846598+binh-dam-ibigroup@users.noreply.github.com> Date: Wed, 13 Sep 2023 10:28:10 -0400 Subject: [PATCH 09/13] ci(percy): Remove --force-exit option for percy jest. --- .github/workflows/percy.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/percy.yml b/.github/workflows/percy.yml index 3f12e171a..2abae2be2 100644 --- a/.github/workflows/percy.yml +++ b/.github/workflows/percy.yml @@ -33,7 +33,7 @@ jobs: YAML_CONFIG: /tmp/otp2config.yml JS_CONFIG: ./percy/har-mock-config.js - name: Take Percy Snapshots (Desktop + Mobile) - run: npx percy exec -- npx jest percy/percy.test.js --force-exit + run: npx percy exec -- npx jest percy/percy.test.js env: PERCY_TOKEN: ${{ secrets.PERCY_TOKEN_OTP2 }} OTP_RR_UI_MODE: normal @@ -44,7 +44,7 @@ jobs: YAML_CONFIG: /tmp/otp2config.yml JS_CONFIG: ./percy/har-mock-config-call-taker.js - name: Take Percy Snapshots (Calltaker) - run: npx percy exec -- npx jest percy/percy.test.js --force-exit + run: npx percy exec -- npx jest percy/percy.test.js env: # Calltaker has a separate key because the calltaker-specific snapshots are different. PERCY_TOKEN: ${{ secrets.PERCY_TOKEN_CALL_TAKER_OTP2 }} From c192fed8b19ce60057514fa0cadb1090e110f611 Mon Sep 17 00:00:00 2001 From: binh-dam-ibigroup <56846598+binh-dam-ibigroup@users.noreply.github.com> Date: Wed, 13 Sep 2023 11:44:10 -0400 Subject: [PATCH 10/13] Revert "ci(percy): Remove --force-exit option for percy jest." This reverts commit 56a230be2189b7f0867aa5ff1abdddebe85f36ed. --- .github/workflows/percy.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/percy.yml b/.github/workflows/percy.yml index 2abae2be2..3f12e171a 100644 --- a/.github/workflows/percy.yml +++ b/.github/workflows/percy.yml @@ -33,7 +33,7 @@ jobs: YAML_CONFIG: /tmp/otp2config.yml JS_CONFIG: ./percy/har-mock-config.js - name: Take Percy Snapshots (Desktop + Mobile) - run: npx percy exec -- npx jest percy/percy.test.js + run: npx percy exec -- npx jest percy/percy.test.js --force-exit env: PERCY_TOKEN: ${{ secrets.PERCY_TOKEN_OTP2 }} OTP_RR_UI_MODE: normal @@ -44,7 +44,7 @@ jobs: YAML_CONFIG: /tmp/otp2config.yml JS_CONFIG: ./percy/har-mock-config-call-taker.js - name: Take Percy Snapshots (Calltaker) - run: npx percy exec -- npx jest percy/percy.test.js + run: npx percy exec -- npx jest percy/percy.test.js --force-exit env: # Calltaker has a separate key because the calltaker-specific snapshots are different. PERCY_TOKEN: ${{ secrets.PERCY_TOKEN_CALL_TAKER_OTP2 }} From 2a72f3483ef3bde220699ac920ea484fa0952c33 Mon Sep 17 00:00:00 2001 From: binh-dam-ibigroup <56846598+binh-dam-ibigroup@users.noreply.github.com> Date: Wed, 13 Sep 2023 11:46:04 -0400 Subject: [PATCH 11/13] test(percy): Use different UI port for calltaker vs normal. --- percy/percy.test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/percy/percy.test.js b/percy/percy.test.js index 5c2f07931..8dea1f8c1 100644 --- a/percy/percy.test.js +++ b/percy/percy.test.js @@ -7,7 +7,7 @@ const percySnapshot = require('@percy/puppeteer') const { OTP_RR_UI_MODE } = process.env -const MOCK_SERVER_PORT = 5486 +const MOCK_SERVER_PORT = OTP_RR_UI_MODE === 'calltaker' ? 5487 : 5486 // Puppeteer can take a long time to load, especially in some ci environments jest.setTimeout(600000) From babf7e22be51f0e75421c63ae0909f4a7e42c542 Mon Sep 17 00:00:00 2001 From: binh-dam-ibigroup <56846598+binh-dam-ibigroup@users.noreply.github.com> Date: Wed, 13 Sep 2023 12:52:04 -0400 Subject: [PATCH 12/13] test(percy): Differentiate mobile snapshot names. --- percy/percy.test.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/percy/percy.test.js b/percy/percy.test.js index 8dea1f8c1..fcf9bd8cb 100644 --- a/percy/percy.test.js +++ b/percy/percy.test.js @@ -16,7 +16,11 @@ jest.setTimeout(600000) const PERCY_EXTRA_WAIT = 5000 const percySnapshotWithWait = async (page, name, enableJavaScript) => { await page.waitForTimeout(PERCY_EXTRA_WAIT) - await percySnapshot(page, `${name} [${OTP_RR_UI_MODE}]`, { enableJavaScript }) + await percySnapshot( + page, + `${name} [${OTP_RR_UI_MODE}${page.isMobile ? '/mobile' : ''}]`, + { enableJavaScript } + ) } let browser @@ -421,6 +425,7 @@ if (OTP_RR_UI_MODE !== 'calltaker') { // Non-calltaker test runs both mobile and desktop test. test('OTP-RR Mobile', async () => { const page = await loadPath('/') + page.isMobile = true await page.setUserAgent('android') await page.setViewport({ height: 1134, From d7f8c8c786fd200b2139fe3ddfac6522ad76390d Mon Sep 17 00:00:00 2001 From: binh-dam-ibigroup <56846598+binh-dam-ibigroup@users.noreply.github.com> Date: Thu, 14 Sep 2023 09:35:23 -0400 Subject: [PATCH 13/13] ci(percy): Separate calltaker snapshots to a separate job. --- .github/workflows/percy.yml | 18 +++++++++++++++++- percy/percy.test.js | 2 +- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/.github/workflows/percy.yml b/.github/workflows/percy.yml index 3f12e171a..c5e878b72 100644 --- a/.github/workflows/percy.yml +++ b/.github/workflows/percy.yml @@ -10,7 +10,6 @@ on: jobs: run-pixel-tests: runs-on: ubuntu-latest - steps: - uses: actions/checkout@v2 with: @@ -37,6 +36,23 @@ jobs: env: PERCY_TOKEN: ${{ secrets.PERCY_TOKEN_OTP2 }} OTP_RR_UI_MODE: normal + run-pixel-tests-calltaker: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + with: + # This allows us to work with the repository during the lint step + fetch-depth: 2 + - name: Use Node.js 16.x + uses: actions/setup-node@v1 + with: + node-version: 16.x + - name: Install npm packages using cache + uses: bahmutov/npm-install@v1 + - name: Download OTP2 config file + run: curl $PERCY_OTP2_CONFIG_URL --output /tmp/otp2config.yml + env: + PERCY_OTP2_CONFIG_URL: ${{ secrets.PERCY_MOCK_OTP2_GEOCODER_CONFIG }} - name: Build OTP-RR Calltaker # Calltaker has a separate config file, so another build should be produced. run: yarn build diff --git a/percy/percy.test.js b/percy/percy.test.js index fcf9bd8cb..24bedcc0a 100644 --- a/percy/percy.test.js +++ b/percy/percy.test.js @@ -7,7 +7,7 @@ const percySnapshot = require('@percy/puppeteer') const { OTP_RR_UI_MODE } = process.env -const MOCK_SERVER_PORT = OTP_RR_UI_MODE === 'calltaker' ? 5487 : 5486 +const MOCK_SERVER_PORT = 5486 // Puppeteer can take a long time to load, especially in some ci environments jest.setTimeout(600000)