From b843228b317c1ed42ec672f88bcc2a21d6ba4a15 Mon Sep 17 00:00:00 2001 From: Pavlos Vinieratos Date: Wed, 17 Feb 2021 13:49:18 +0100 Subject: [PATCH 01/28] first try --- .../test-freshness.ts | 10 ++++++ package.json | 1 + yarn.lock | 32 ++++++++++++++++++- 3 files changed, 42 insertions(+), 1 deletion(-) create mode 100755 metaphysics-queries-freshness-tests/test-freshness.ts diff --git a/metaphysics-queries-freshness-tests/test-freshness.ts b/metaphysics-queries-freshness-tests/test-freshness.ts new file mode 100755 index 00000000000..d3c862ae82e --- /dev/null +++ b/metaphysics-queries-freshness-tests/test-freshness.ts @@ -0,0 +1,10 @@ +import { request, gql } from "graphql-request" +const query = gql` + { + artists { + name + } + } +` + +request("https://metaphysics-staging.artsy.net/v2", query).then((data) => console.log(data)) diff --git a/package.json b/package.json index 41ba12663e2..4284fe7c19f 100644 --- a/package.json +++ b/package.json @@ -185,6 +185,7 @@ "enzyme-adapter-react-16": "1.13.0", "glob": "7.1.6", "graphql": "14.5.6", + "graphql-request": "3.4.0", "husky": "4.2.5", "jest": "25.2.7", "jest-fetch-mock": "^3.0.3", diff --git a/yarn.lock b/yarn.lock index c9bff620e7b..78af121258b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4485,6 +4485,13 @@ combined-stream@^1.0.6, combined-stream@~1.0.6: dependencies: delayed-stream "~1.0.0" +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + command-exists@^1.2.8: version "1.2.8" resolved "https://registry.yarnpkg.com/command-exists/-/command-exists-1.2.8.tgz#715acefdd1223b9c9b37110a149c6392c2852291" @@ -4790,7 +4797,7 @@ create-react-class@^15.6.2: loose-envify "^1.3.1" object-assign "^4.1.1" -cross-fetch@^3.0.4: +cross-fetch@^3.0.4, cross-fetch@^3.0.6: version "3.0.6" resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.0.6.tgz#3a4040bc8941e653e0e9cf17f29ebcd177d3365c" integrity sha512-KBPUbqgFjzWlVcURG+Svp9TlhA5uliYtiNx/0r8nv0pdypeQCRJ9IaSIc3q/x3q8t3F75cHuwxVql1HFGHCNJQ== @@ -5958,6 +5965,11 @@ extract-files@^5.0.1: resolved "https://registry.yarnpkg.com/extract-files/-/extract-files-5.0.1.tgz#c9492a8410be643e260a376f0151361993d5f659" integrity sha512-qRW6y9eKF0VbCyOoOEtFhzJ3uykAw8GKwQVXyAIqwocyEWW4m+v+evec34RwtUkkxxHh7NKBLJ6AnXM8W4dH5w== +extract-files@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/extract-files/-/extract-files-9.0.0.tgz#8a7744f2437f81f5ed3250ed9f1550de902fe54a" + integrity sha512-CvdFfHkC95B4bBBk36hcEmvdR2awOdhhVUYH6S/zrVj3477zven/fJMYg7121h4T1xHZC+tetUpubpAhxwI7hQ== + extsprintf@1.3.0, extsprintf@^1.2.0: version "1.3.0" resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" @@ -6216,6 +6228,15 @@ forever-agent@~0.6.1: resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= +form-data@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" + integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + form-data@~2.3.2: version "2.3.3" resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" @@ -6649,6 +6670,15 @@ grapheme-splitter@1.0.4: resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== +graphql-request@3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/graphql-request/-/graphql-request-3.4.0.tgz#3a400cd5511eb3c064b1873afb059196bbea9c2b" + integrity sha512-acrTzidSlwAj8wBNO7Q/UQHS8T+z5qRGquCQRv9J1InwR01BBWV9ObnoE+JS5nCCEj8wSGS0yrDXVDoRiKZuOg== + dependencies: + cross-fetch "^3.0.6" + extract-files "^9.0.0" + form-data "^3.0.0" + graphql-tag@^2.9.2: version "2.10.1" resolved "https://registry.yarnpkg.com/graphql-tag/-/graphql-tag-2.10.1.tgz#10aa41f1cd8fae5373eaf11f1f67260a3cad5e02" From 4059cb8a21921159fef00cee0ba4ab911f1e0d7c Mon Sep 17 00:00:00 2001 From: Pavlos Vinieratos Date: Wed, 17 Feb 2021 18:04:16 +0100 Subject: [PATCH 02/28] more work --- .../test-freshness.js | 46 +++++++++++++++++++ .../test-freshness.ts | 10 ---- 2 files changed, 46 insertions(+), 10 deletions(-) create mode 100755 metaphysics-queries-freshness-tests/test-freshness.js delete mode 100755 metaphysics-queries-freshness-tests/test-freshness.ts diff --git a/metaphysics-queries-freshness-tests/test-freshness.js b/metaphysics-queries-freshness-tests/test-freshness.js new file mode 100755 index 00000000000..76926cee004 --- /dev/null +++ b/metaphysics-queries-freshness-tests/test-freshness.js @@ -0,0 +1,46 @@ +#!/usr/bin/env node + +// @ts-check + +const { GraphQLClient } = require("graphql-request") +const { values, range } = require("lodash") +const { exit, stdout } = require("process") + +const metaphysics = new GraphQLClient("https://metaphysics-staging.artsy.net/v2", { + headers: { + }, +}) + +const doIt = async () => { + const allQueries = values(require("../data/complete.queryMap.json")) + const allNonTestQueries = allQueries.filter((q) => !q.includes("Test")) + const queries = allNonTestQueries.filter((q) => q.startsWith("query")) + const queriesWithoutVars = queries.filter((q) => !q.includes("$")) + const mutations = allNonTestQueries.filter((q) => q.startsWith("mutation")) + + // console.log(queries.length) + // console.log(queriesWithoutVars.length) + console.warn(`Skipping ${mutations.length} mutations`) + console.log(`Skipping ${allQueries.length - allNonTestQueries.length} test queries`) + + await Promise.all( + queriesWithoutVars.map(async (q) => { + try { + stdout.write(".") + const r = await metaphysics.request(q) + // console.log(JSON.stringify(r)) + } catch (e) { + console.log("") + console.error("The following query failed:") + console.warn(q) + exit(-1) + } + }) + ) + + console.log("") + console.log("done") + exit(0) +} + +doIt() diff --git a/metaphysics-queries-freshness-tests/test-freshness.ts b/metaphysics-queries-freshness-tests/test-freshness.ts deleted file mode 100755 index d3c862ae82e..00000000000 --- a/metaphysics-queries-freshness-tests/test-freshness.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { request, gql } from "graphql-request" -const query = gql` - { - artists { - name - } - } -` - -request("https://metaphysics-staging.artsy.net/v2", query).then((data) => console.log(data)) From ed8040d4bff7879d89e700fc78d98ea4fd02d19d Mon Sep 17 00:00:00 2001 From: Pavlos Vinieratos Date: Fri, 19 Feb 2021 11:51:23 +0100 Subject: [PATCH 03/28] more --- metaphysics-queries-freshness-tests/test-freshness.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/metaphysics-queries-freshness-tests/test-freshness.js b/metaphysics-queries-freshness-tests/test-freshness.js index 76926cee004..b18ea9e1b5a 100755 --- a/metaphysics-queries-freshness-tests/test-freshness.js +++ b/metaphysics-queries-freshness-tests/test-freshness.js @@ -13,16 +13,17 @@ const metaphysics = new GraphQLClient("https://metaphysics-staging.artsy.net/v2" const doIt = async () => { const allQueries = values(require("../data/complete.queryMap.json")) - const allNonTestQueries = allQueries.filter((q) => !q.includes("Test")) + const allNonTestQueries = allQueries.filter( + (q) => !q.includes("Test") && !q.includes("Mock") && !q.includes("Fixtures") + ) const queries = allNonTestQueries.filter((q) => q.startsWith("query")) const queriesWithoutVars = queries.filter((q) => !q.includes("$")) const mutations = allNonTestQueries.filter((q) => q.startsWith("mutation")) - // console.log(queries.length) - // console.log(queriesWithoutVars.length) console.warn(`Skipping ${mutations.length} mutations`) console.log(`Skipping ${allQueries.length - allNonTestQueries.length} test queries`) + console.log(`Running ${queriesWithoutVars.length} no-var queries`) await Promise.all( queriesWithoutVars.map(async (q) => { try { From 1102a53617b325899829654a34ec31ac9a573a9e Mon Sep 17 00:00:00 2001 From: Pavlos Vinieratos Date: Fri, 19 Feb 2021 11:56:02 +0100 Subject: [PATCH 04/28] boom, queries without vars work --- metaphysics-queries-freshness-tests/test-freshness.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/metaphysics-queries-freshness-tests/test-freshness.js b/metaphysics-queries-freshness-tests/test-freshness.js index b18ea9e1b5a..1f3a15d1323 100755 --- a/metaphysics-queries-freshness-tests/test-freshness.js +++ b/metaphysics-queries-freshness-tests/test-freshness.js @@ -3,11 +3,17 @@ // @ts-check const { GraphQLClient } = require("graphql-request") -const { values, range } = require("lodash") +const { values } = require("lodash") const { exit, stdout } = require("process") +const [userId, token] = [ +] + const metaphysics = new GraphQLClient("https://metaphysics-staging.artsy.net/v2", { headers: { + // sd.CURRENT_USER.id and accessToken + "X-Access-Token": token, + "X-User-Id": userId, }, }) From f0be7e9f9f60776aad7d7d8cc7f663fe5995f432 Mon Sep 17 00:00:00 2001 From: Pavlos Vinieratos Date: Fri, 19 Feb 2021 15:23:21 +0100 Subject: [PATCH 05/28] wow, pretty sweet! --- .../test-freshness.js | 74 ++++++++++++++++++- 1 file changed, 73 insertions(+), 1 deletion(-) diff --git a/metaphysics-queries-freshness-tests/test-freshness.js b/metaphysics-queries-freshness-tests/test-freshness.js index 1f3a15d1323..8a8e7e624f0 100755 --- a/metaphysics-queries-freshness-tests/test-freshness.js +++ b/metaphysics-queries-freshness-tests/test-freshness.js @@ -19,21 +19,61 @@ const metaphysics = new GraphQLClient("https://metaphysics-staging.artsy.net/v2" const doIt = async () => { const allQueries = values(require("../data/complete.queryMap.json")) - const allNonTestQueries = allQueries.filter( + const problemQueries = allQueries.filter( + (q) => + q.includes("$conversationID") || + q.includes("ArtistRailNewSuggestionQuery") || + q.includes("ArtistSeriesQuery") || + q.includes("ArtworkMediumQuery") || + q.includes("AuctionResultQuery") || + q.includes("AutosuggestResultsQuery") || + q.includes("BidFlowQuery") || + q.includes("BidderPositionQuery") || + q.includes("BottomTabsModelFetchCurrentUnreadConversationCountQuery") || + q.includes("ConfirmBidRefetchQuery") || + q.includes("ConsignmentsArtistQuery") || + q.includes("ConversationQuery") || + q.includes("FairArticlesQuery") || + q.includes("FairExhibitorsQuery") || + q.includes("FeatureQuery") || + q.includes("GeneQuery") || + q.includes("InboxOldQuery") || + q.includes("MapRendererQuery") || + q.includes("PartnerLocationsQuery") || + q.includes("PartnerQuery") || + q.includes("PartnerRefetchQuery") || + q.includes("PriceSummaryQuery") || + q.includes("RegistrationFlowQuery") || + q.includes("SaleAboveTheFoldQuery") || + q.includes("SaleActiveBidsRefetchQuery") || + q.includes("SaleBelowTheFoldQuery") || + q.includes("SaleInfoQueryRendererQuery") || + q.includes("SaleRefetchQuery") || + q.includes("SelectMaxBidRefetchQuery") || + q.includes("ShowMoreInfoQuery") || + q.includes("ShowQuery") || + q.includes("VanityURLEntityQuery") + ) + const allQueriesToCheck = allQueries.filter((q) => !problemQueries.includes(q)) + const allNonTestQueries = allQueriesToCheck.filter( (q) => !q.includes("Test") && !q.includes("Mock") && !q.includes("Fixtures") ) const queries = allNonTestQueries.filter((q) => q.startsWith("query")) const queriesWithoutVars = queries.filter((q) => !q.includes("$")) + const queriesWithCursor = queries.filter((q) => q.includes("$cursor")) + const queriesWithVars = queries.filter((q) => !queriesWithoutVars.includes(q) && !queriesWithCursor.includes(q)) const mutations = allNonTestQueries.filter((q) => q.startsWith("mutation")) console.warn(`Skipping ${mutations.length} mutations`) console.log(`Skipping ${allQueries.length - allNonTestQueries.length} test queries`) + console.warn(`Skipping ${queriesWithCursor.length} queries with cursors`) console.log(`Running ${queriesWithoutVars.length} no-var queries`) await Promise.all( queriesWithoutVars.map(async (q) => { try { stdout.write(".") + // console.log(q) const r = await metaphysics.request(q) // console.log(JSON.stringify(r)) } catch (e) { @@ -45,6 +85,38 @@ const doIt = async () => { }) ) + console.log("") + console.log(`Running ${queriesWithVars.length} var queries`) + await Promise.all( + queriesWithVars.map(async (q) => { + try { + stdout.write(".") + // console.log(q) + const r = await metaphysics.request(q, { + artworkID: "felipe-pantone-subtractive-variability-silk-robe-w-slash-j-balvin", + artworkSlug: "felipe-pantone-subtractive-variability-silk-robe-w-slash-j-balvin", + fairID: "london-art-fair-edit", + citySlug: "athens-greece", + artistInternalID: "4dd1584de0091e000100207c", // banksy + artistSlug: "banksy", + artistID: "banksy", + medium: "prints", + collectionID: "agnes-martin-lithographs", + viewingRoomID: "movart-mario-macilau-circle-of-memories", + isPad: false, + heroImageVersion: "NARROW", + count: 4, + }) + // console.log(JSON.stringify(r)) + } catch (e) { + console.log("") + console.error("The following query failed:") + console.warn(q) + exit(-1) + } + }) + ) + console.log("") console.log("done") exit(0) From c4c85017747294e6ed2b5b19e5e20e3b39170e40 Mon Sep 17 00:00:00 2001 From: Pavlos Vinieratos Date: Fri, 19 Feb 2021 16:18:31 +0100 Subject: [PATCH 06/28] get token and id after logging in --- .../test-freshness.js | 29 ++-- package.json | 1 + yarn.lock | 157 +++++++++++++++++- 3 files changed, 170 insertions(+), 17 deletions(-) diff --git a/metaphysics-queries-freshness-tests/test-freshness.js b/metaphysics-queries-freshness-tests/test-freshness.js index 8a8e7e624f0..5b010ba12cb 100755 --- a/metaphysics-queries-freshness-tests/test-freshness.js +++ b/metaphysics-queries-freshness-tests/test-freshness.js @@ -5,19 +5,28 @@ const { GraphQLClient } = require("graphql-request") const { values } = require("lodash") const { exit, stdout } = require("process") +const puppeteer = require("puppeteer") -const [userId, token] = [ -] +const doIt = async () => { + const browser = await puppeteer.launch({ headless: true }) + const page = await browser.newPage() + await page.goto("https://staging.artsy.net") + await page.click('aria/button[name="Log in"]') + await page.click('aria/textbox[name="Enter your email address"]') + await page.type('aria/textbox[name="Enter your email address"]', process.env.FRESHNESS_TEST_EMAIL) + await page.click('aria/textbox[name="Enter your password"]') + await page.type('aria/textbox[name="Enter your password"]', process.env.FRESHNESS_TEST_PASSWORD) + await page.click('aria/pushbutton[name="Log in"]') + await page.waitForNavigation() + const { id: userId, accessToken: token } = await page.evaluate("sd.CURRENT_USER") -const metaphysics = new GraphQLClient("https://metaphysics-staging.artsy.net/v2", { - headers: { - // sd.CURRENT_USER.id and accessToken - "X-Access-Token": token, - "X-User-Id": userId, - }, -}) + const metaphysics = new GraphQLClient("https://metaphysics-staging.artsy.net/v2", { + headers: { + "X-Access-Token": token, + "X-User-Id": userId, + }, + }) -const doIt = async () => { const allQueries = values(require("../data/complete.queryMap.json")) const problemQueries = allQueries.filter( (q) => diff --git a/package.json b/package.json index 4284fe7c19f..48b1b3568d2 100644 --- a/package.json +++ b/package.json @@ -203,6 +203,7 @@ "postinstall-prepare": "1.0.1", "prettier": "^2.2.0", "pull-lock": "1.0.0", + "puppeteer": "^7.1.0", "react-dom": "16.8.3", "react-relay-network-modern": "4.7.1", "react-test-renderer": "16.13.1", diff --git a/yarn.lock b/yarn.lock index 78af121258b..01524571d1e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2995,6 +2995,13 @@ dependencies: "@types/yargs-parser" "*" +"@types/yauzl@^2.9.1": + version "2.9.1" + resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.9.1.tgz#d10f69f9f522eef3cf98e30afb684a1e1ec923af" + integrity sha512-A1b8SU4D10uoPjwb0lnHmmu8wZhR9d+9o2PKBQT2jU5YPTKsxac6M2qGAdY7VcL+dHHhARVUDmeg0rOrcd9EjA== + dependencies: + "@types/node" "*" + "@types/yup@0.29.3": version "0.29.3" resolved "https://registry.yarnpkg.com/@types/yup/-/yup-0.29.3.tgz#5a85024796bffe0eb01601bfc180fe218356dba4" @@ -3751,7 +3758,7 @@ base64-js@^1.1.2: resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.1.tgz#a91947da1f4a516ea38e5b4ec0ec3773675e0886" integrity sha512-dwVUVIXsBZXwTuwnXI9RK8sBmgq09NDHzyR9SAph9eqk76gKK2JSQmZARC2zRC81JC2QTtxD0ARU5qTS25gIGw== -base64-js@^1.2.3: +base64-js@^1.2.3, base64-js@^1.3.1: version "1.5.1" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== @@ -3806,6 +3813,15 @@ binaryextensions@^2.1.2: resolved "https://registry.yarnpkg.com/binaryextensions/-/binaryextensions-2.1.2.tgz#c83c3d74233ba7674e4f313cb2a2b70f54e94b7c" integrity sha512-xVNN69YGDghOqCCtA6FI7avYrr02mTJjOgB0/f1VPD3pJC8QEvjTKWc4epDx8AqxxA75NI0QpVM2gPJXUbE4Tg== +bl@^4.0.3: + version "4.1.0" + resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" + integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== + dependencies: + buffer "^5.5.0" + inherits "^2.0.4" + readable-stream "^3.4.0" + bluebird@2.9.6: version "2.9.6" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-2.9.6.tgz#1fc3a6b1685267dc121b5ec89b32ce069d81ab7d" @@ -3945,7 +3961,7 @@ buffer-alloc@^1.2.0: buffer-alloc-unsafe "^1.1.0" buffer-fill "^1.0.0" -buffer-crc32@^0.2.13: +buffer-crc32@^0.2.13, buffer-crc32@~0.2.3: version "0.2.13" resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= @@ -3964,6 +3980,14 @@ buffer-from@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" +buffer@^5.2.1, buffer@^5.5.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.1.13" + builtin-modules@^1.0.0, builtin-modules@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" @@ -5281,6 +5305,11 @@ detect-port@1.2.1: address "^1.0.1" debug "^2.6.0" +devtools-protocol@0.0.847576: + version "0.0.847576" + resolved "https://registry.yarnpkg.com/devtools-protocol/-/devtools-protocol-0.0.847576.tgz#2f201bfb68aa9ef4497199fbd7f5d5dfde3b200b" + integrity sha512-0M8kobnSQE0Jmly7Mhbeq0W/PpZfnuK+WjN2ZRVPbGqYwCHCioAVp84H0TcLimgECcN5H976y5QiXMGBC9JKmg== + diff-sequences@^25.1.0, diff-sequences@^25.2.6: version "25.2.6" resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-25.2.6.tgz#5f467c00edd35352b7bca46d7927d60e687a76dd" @@ -5475,7 +5504,7 @@ encoding@^0.1.11: dependencies: iconv-lite "~0.4.13" -end-of-stream@^1.1.0: +end-of-stream@^1.1.0, end-of-stream@^1.4.1: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== @@ -5970,6 +5999,17 @@ extract-files@^9.0.0: resolved "https://registry.yarnpkg.com/extract-files/-/extract-files-9.0.0.tgz#8a7744f2437f81f5ed3250ed9f1550de902fe54a" integrity sha512-CvdFfHkC95B4bBBk36hcEmvdR2awOdhhVUYH6S/zrVj3477zven/fJMYg7121h4T1xHZC+tetUpubpAhxwI7hQ== +extract-zip@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a" + integrity sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg== + dependencies: + debug "^4.1.1" + get-stream "^5.1.0" + yauzl "^2.10.0" + optionalDependencies: + "@types/yauzl" "^2.9.1" + extsprintf@1.3.0, extsprintf@^1.2.0: version "1.3.0" resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" @@ -6085,6 +6125,13 @@ fbjs@^1.0.0: setimmediate "^1.0.5" ua-parser-js "^0.7.18" +fd-slicer@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" + integrity sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4= + dependencies: + pend "~1.2.0" + figures@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" @@ -6276,6 +6323,11 @@ fresh@0.5.2: resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= +fs-constants@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" + integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== + fs-exists-sync@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz#982d6893af918e72d08dec9e8673ff2b5a8d6add" @@ -6446,6 +6498,13 @@ get-stream@^5.0.0: dependencies: pump "^3.0.0" +get-stream@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" + integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== + dependencies: + pump "^3.0.0" + get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" @@ -7003,6 +7062,11 @@ iconv-lite@^0.4.17: resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" integrity sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ== +ieee754@^1.1.13: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + ignore-walk@^3.0.1: version "3.0.3" resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.3.tgz#017e2447184bfeade7c238e4aefdd1e8f95b1e37" @@ -7113,7 +7177,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2: +inherits@2, inherits@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -9899,6 +9963,11 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" +mkdirp-classic@^0.5.2: + version "0.5.3" + resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" + integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== + mkdirp@^0.5.0: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" @@ -10066,7 +10135,7 @@ node-fetch@2.6.0: resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd" integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA== -node-fetch@2.6.1, node-fetch@^2.0.0-alpha.8, node-fetch@^2.1.1, node-fetch@^2.2.0, node-fetch@^2.3.0, node-fetch@^2.5.0, node-fetch@^2.6.0: +node-fetch@2.6.1, node-fetch@^2.0.0-alpha.8, node-fetch@^2.1.1, node-fetch@^2.2.0, node-fetch@^2.3.0, node-fetch@^2.5.0, node-fetch@^2.6.0, node-fetch@^2.6.1: version "2.6.1" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== @@ -10848,6 +10917,11 @@ path-type@^4.0.0: resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== +pend@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" + integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA= + performance-now@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" @@ -11175,7 +11249,7 @@ process-nextick-args@^2.0.0, process-nextick-args@~2.0.0: resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw== -progress@^2.0.3: +progress@^2.0.1, progress@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== @@ -11277,6 +11351,24 @@ punycode@^2.1.0, punycode@^2.1.1: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== +puppeteer@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-7.1.0.tgz#ae37f48ee13f157c5b9255d580ffe4c5c1298679" + integrity sha512-lqOLzqCKdh7yUAHvK6LxgOpQrL8Bv1/jvS8MLDXxcNms2rlM3E8p/Wlwc7efbRZ0twxTzUeqjN5EqrTwxOwc9g== + dependencies: + debug "^4.1.0" + devtools-protocol "0.0.847576" + extract-zip "^2.0.0" + https-proxy-agent "^5.0.0" + node-fetch "^2.6.1" + pkg-dir "^4.2.0" + progress "^2.0.1" + proxy-from-env "^1.1.0" + rimraf "^3.0.2" + tar-fs "^2.0.0" + unbzip2-stream "^1.3.3" + ws "^7.2.3" + qs@~6.5.2: version "6.5.2" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" @@ -11712,6 +11804,15 @@ readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable string_decoder "~1.1.1" util-deprecate "~1.0.1" +readable-stream@^3.1.1, readable-stream@^3.4.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + readline-sync@^1.4.9: version "1.4.9" resolved "https://registry.yarnpkg.com/readline-sync/-/readline-sync-1.4.9.tgz#3eda8e65f23cd2a17e61301b1f0003396af5ecda" @@ -13368,6 +13469,27 @@ tapable@^2.0.0-beta.2: resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.0.0-beta.8.tgz#0a8d42f6895d43d5a895de15d9a9e3e425f72a0a" integrity sha512-7qMajFcHb2O+aWufLoAvKhEehIwikXUTH1s8RP4R5gSYMIB0Tmypp+J90EtSNVbIlI7oB0Oz8ZlpJUJlZ5owxQ== +tar-fs@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784" + integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng== + dependencies: + chownr "^1.1.1" + mkdirp-classic "^0.5.2" + pump "^3.0.0" + tar-stream "^2.1.4" + +tar-stream@^2.1.4: + version "2.2.0" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" + integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== + dependencies: + bl "^4.0.3" + end-of-stream "^1.4.1" + fs-constants "^1.0.0" + inherits "^2.0.3" + readable-stream "^3.1.1" + tar@^4: version "4.4.13" resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" @@ -13453,7 +13575,7 @@ through2@^3.0.0: dependencies: readable-stream "2 || 3" -through@^2.3.6: +through@^2.3.6, through@^2.3.8: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= @@ -13799,6 +13921,14 @@ ultron@1.0.x: resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.0.2.tgz#ace116ab557cd197386a4e88f4685378c8b2e4fa" integrity sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po= +unbzip2-stream@^1.3.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz#b0da04c4371311df771cdc215e87f2130991ace7" + integrity sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg== + dependencies: + buffer "^5.2.1" + through "^2.3.8" + underscore@~1.4.4: version "1.4.4" resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.4.4.tgz#61a6a32010622afa07963bf325203cf12239d604" @@ -14466,6 +14596,11 @@ ws@^7, ws@^7.0.0: resolved "https://registry.yarnpkg.com/ws/-/ws-7.2.3.tgz#a5411e1fb04d5ed0efee76d26d5c46d830c39b46" integrity sha512-HTDl9G9hbkNDk98naoR/cHDws7+EyYMOdL1BmjsZXRUjf7d+MficC4B7HLUPlSiho0vg+CWKrGIt/VJBd1xunQ== +ws@^7.2.3: + version "7.4.3" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.3.tgz#1f9643de34a543b8edb124bdcbc457ae55a6e5cd" + integrity sha512-hr6vCR76GsossIRsr8OLR9acVVm1jyfEWvhbNjtgPOrfvAlKzvyeg/P6r8RuDjRyrcQoPQT7K0DGEPc7Ae6jzA== + x-is-string@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/x-is-string/-/x-is-string-0.1.0.tgz#474b50865af3a49a9c4657f05acd145458f77d82" @@ -14725,6 +14860,14 @@ yargs@~3.10.0: decamelize "^1.0.0" window-size "0.1.0" +yauzl@^2.10.0: + version "2.10.0" + resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" + integrity sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk= + dependencies: + buffer-crc32 "~0.2.3" + fd-slicer "~1.1.0" + yeoman-environment@^2.0.5, yeoman-environment@^2.3.4: version "2.3.4" resolved "https://registry.yarnpkg.com/yeoman-environment/-/yeoman-environment-2.3.4.tgz#ae156147a1b85de939366e5438b00cb3eb54c3e9" From aee5c42fca3efd9d3ca8e82f03b84945c5b3a44d Mon Sep 17 00:00:00 2001 From: Pavlos Vinieratos Date: Fri, 19 Feb 2021 16:45:01 +0100 Subject: [PATCH 07/28] try some automation --- .circleci/config.yml | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/.circleci/config.yml b/.circleci/config.yml index 7cb6ca862c1..9e51b84d351 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -182,6 +182,11 @@ commands: - android/build - android/app/build - node_modules/react-native-config + check-metaphysics-freshness: + steps: + - run: + name: Check Metaphysics freshness + command: ./metaphysics-queries-freshness-tests/test-freshness.js jobs: deploy-nightly-beta: @@ -402,6 +407,17 @@ workflows: jobs: - deploy-nightly-beta + nightly-freshness: + triggers: + - schedule: + cron: "0 6 * * *" + filters: + branches: + only: + - mp-queries-tester + jobs: + - check-metaphysics-freshness + promote: jobs: - promote-beta-to-app-store: @@ -412,6 +428,11 @@ workflows: test-build-deploy: jobs: + - check-metaphysics-freshness: + filters: + branches: + only: + - mp-queries-tester - check-pr: filters: branches: From aa5fd6ac583598f3ae73eb5ca5f4540b84ebf29c Mon Sep 17 00:00:00 2001 From: Pavlos Vinieratos Date: Fri, 19 Feb 2021 18:01:05 +0100 Subject: [PATCH 08/28] maybe not this --- .circleci/config.yml | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 9e51b84d351..781100e730f 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -407,17 +407,6 @@ workflows: jobs: - deploy-nightly-beta - nightly-freshness: - triggers: - - schedule: - cron: "0 6 * * *" - filters: - branches: - only: - - mp-queries-tester - jobs: - - check-metaphysics-freshness - promote: jobs: - promote-beta-to-app-store: From c3f6b31c769015fc136bdc5dfb219a31bd5770f4 Mon Sep 17 00:00:00 2001 From: Pavlos Vinieratos Date: Fri, 19 Feb 2021 18:03:51 +0100 Subject: [PATCH 09/28] hm maybe thats the right place --- .circleci/config.yml | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 781100e730f..3e012d6f217 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -182,11 +182,6 @@ commands: - android/build - android/app/build - node_modules/react-native-config - check-metaphysics-freshness: - steps: - - run: - name: Check Metaphysics freshness - command: ./metaphysics-queries-freshness-tests/test-freshness.js jobs: deploy-nightly-beta: @@ -231,6 +226,17 @@ jobs: name: Prevent Strictness Regressions command: node scripts/strictness-migration.js check-pr + check-metaphysics-freshness: + executor: + name: node/default + tag: "14.13.1" + steps: + - checkout + - install-node-modules + - run: + name: Check Metaphysics freshness + command: ./metaphysics-queries-freshness-tests/test-freshness.js + build-test-js: executor: name: node/default From 2c12c2e3bf4265aab3c6a8f190f725252513326b Mon Sep 17 00:00:00 2001 From: Pavlos Vinieratos Date: Mon, 22 Feb 2021 12:45:14 +0100 Subject: [PATCH 10/28] add puppeteer orb --- .circleci/config.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.circleci/config.yml b/.circleci/config.yml index 3e012d6f217..ee45ac43228 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -6,6 +6,7 @@ orbs: node: circleci/node@1.1.6 queue: eddiewebb/queue@1.0.110 horizon: artsy/release@0.0.1 + puppeteer: threetreeslight/puppeteer@0.1.2 commands: await-previous-builds: From 0bfc7b767e2dd73498e6d73dbce0fc798a8ae036 Mon Sep 17 00:00:00 2001 From: Pavlos Vinieratos Date: Mon, 22 Feb 2021 12:52:33 +0100 Subject: [PATCH 11/28] maybe now --- .circleci/config.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.circleci/config.yml b/.circleci/config.yml index ee45ac43228..6f1754bc879 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -233,6 +233,7 @@ jobs: tag: "14.13.1" steps: - checkout + - puppeteer/install - install-node-modules - run: name: Check Metaphysics freshness From ea89ebad824944ca7cc53b8ab89366e752cf1e10 Mon Sep 17 00:00:00 2001 From: Pavlos Vinieratos Date: Mon, 22 Feb 2021 13:22:25 +0100 Subject: [PATCH 12/28] maybe now --- .circleci/config.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.circleci/config.yml b/.circleci/config.yml index 6f1754bc879..343f381f95d 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -233,6 +233,9 @@ jobs: tag: "14.13.1" steps: - checkout + - run: + name: apt-get update + command: apt-get update --fix-missing - puppeteer/install - install-node-modules - run: From e138a1d8e01afaeee347b3434710751af3c9a427 Mon Sep 17 00:00:00 2001 From: Pavlos Vinieratos Date: Tue, 23 Feb 2021 16:00:00 +0100 Subject: [PATCH 13/28] read from env --- metaphysics-queries-freshness-tests/test-freshness.js | 2 ++ package.json | 1 + yarn.lock | 5 +++++ 3 files changed, 8 insertions(+) diff --git a/metaphysics-queries-freshness-tests/test-freshness.js b/metaphysics-queries-freshness-tests/test-freshness.js index 5b010ba12cb..ad8f0545a0a 100755 --- a/metaphysics-queries-freshness-tests/test-freshness.js +++ b/metaphysics-queries-freshness-tests/test-freshness.js @@ -2,6 +2,8 @@ // @ts-check +require("dotenv").config() + const { GraphQLClient } = require("graphql-request") const { values } = require("lodash") const { exit, stdout } = require("process") diff --git a/package.json b/package.json index 48b1b3568d2..03b52246354 100644 --- a/package.json +++ b/package.json @@ -181,6 +181,7 @@ "danger": "6.1.1", "danger-plugin-jest": "1.1.0", "dedent": "0.7.0", + "dotenv": "8.2.0", "enzyme": "3.9.0", "enzyme-adapter-react-16": "1.13.0", "glob": "7.1.6", diff --git a/yarn.lock b/yarn.lock index 01524571d1e..47041e302b1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5401,6 +5401,11 @@ dot-prop@^4.1.0, dot-prop@^4.1.1: dependencies: is-obj "^1.0.0" +dotenv@8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" + integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== + dotenv@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.0.0.tgz#ed310c165b4e8a97bb745b0a9d99c31bda566440" From b247dc593a02a3395d6b6ad1043ea407bebaf00a Mon Sep 17 00:00:00 2001 From: Pavlos Vinieratos Date: Wed, 24 Feb 2021 11:13:19 +0100 Subject: [PATCH 14/28] move things to a func --- .../test-freshness.js | 100 +++++++++--------- 1 file changed, 52 insertions(+), 48 deletions(-) diff --git a/metaphysics-queries-freshness-tests/test-freshness.js b/metaphysics-queries-freshness-tests/test-freshness.js index ad8f0545a0a..cd4e669d203 100755 --- a/metaphysics-queries-freshness-tests/test-freshness.js +++ b/metaphysics-queries-freshness-tests/test-freshness.js @@ -79,57 +79,61 @@ const doIt = async () => { console.log(`Skipping ${allQueries.length - allNonTestQueries.length} test queries`) console.warn(`Skipping ${queriesWithCursor.length} queries with cursors`) - console.log(`Running ${queriesWithoutVars.length} no-var queries`) - await Promise.all( - queriesWithoutVars.map(async (q) => { - try { - stdout.write(".") - // console.log(q) - const r = await metaphysics.request(q) - // console.log(JSON.stringify(r)) - } catch (e) { - console.log("") - console.error("The following query failed:") - console.warn(q) - exit(-1) + const errors = [] + const executeRequests = async (requests, description, verbose = false) => { + const log = (...args) => { + if (verbose) { + console.log(...args) } - }) - ) + } - console.log("") - console.log(`Running ${queriesWithVars.length} var queries`) - await Promise.all( - queriesWithVars.map(async (q) => { - try { - stdout.write(".") - // console.log(q) - const r = await metaphysics.request(q, { - artworkID: "felipe-pantone-subtractive-variability-silk-robe-w-slash-j-balvin", - artworkSlug: "felipe-pantone-subtractive-variability-silk-robe-w-slash-j-balvin", - fairID: "london-art-fair-edit", - citySlug: "athens-greece", - artistInternalID: "4dd1584de0091e000100207c", // banksy - artistSlug: "banksy", - artistID: "banksy", - medium: "prints", - collectionID: "agnes-martin-lithographs", - viewingRoomID: "movart-mario-macilau-circle-of-memories", - isPad: false, - heroImageVersion: "NARROW", - count: 4, - }) - // console.log(JSON.stringify(r)) - } catch (e) { - console.log("") - console.error("The following query failed:") - console.warn(q) - exit(-1) - } - }) - ) + console.log(`Running ${requests.length} ${description}`) + await Promise.all( + requests.map(async (req) => { + try { + log(req) + const response = await metaphysics.request(req, { + artworkID: "felipe-pantone-subtractive-variability-silk-robe-w-slash-j-balvin", + artworkSlug: "felipe-pantone-subtractive-variability-silk-robe-w-slash-j-balvin", + fairID: "london-art-fair-edit", + citySlug: "athens-greece", + artistInternalID: "4dd1584de0091e000100207c", // banksy + artistSlug: "banksy", + artistID: "banksy", + medium: "prints", + collectionID: "agnes-martin-lithographs", + viewingRoomID: "movart-mario-macilau-circle-of-memories", + isPad: false, + heroImageVersion: "NARROW", + count: 4, + }) + stdout.write(".") + log(JSON.stringify(response)) + } catch (e) { + stdout.write("x") + errors.push({ request: req, error: e }) + } + }) + ) + console.log("") + } + + executeRequests(queriesWithoutVars, "no-var queries") - console.log("") - console.log("done") + executeRequests(queriesWithVars, "var queries") + + // end game + if (errors.length !== 0) { + console.error(`${errors.length} queries failed!`) + errors.map(({ request, error }) => { + console.warn("- The following query:") + console.log(request) + console.warn("failed with error:") + console.log(error) + }) + exit(-1) + } + console.log("Success! Our queries are so so fresh.") exit(0) } From 46f3ad6f00c15e9ca45ba987e5045c0c4f6e70b2 Mon Sep 17 00:00:00 2001 From: Pavlos Vinieratos Date: Wed, 24 Feb 2021 13:06:36 +0100 Subject: [PATCH 15/28] extract login --- .../test-freshness.js | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/metaphysics-queries-freshness-tests/test-freshness.js b/metaphysics-queries-freshness-tests/test-freshness.js index cd4e669d203..b3f589508f1 100755 --- a/metaphysics-queries-freshness-tests/test-freshness.js +++ b/metaphysics-queries-freshness-tests/test-freshness.js @@ -9,7 +9,8 @@ const { values } = require("lodash") const { exit, stdout } = require("process") const puppeteer = require("puppeteer") -const doIt = async () => { +const login = async () => { + console.log("Logging in..") const browser = await puppeteer.launch({ headless: true }) const page = await browser.newPage() await page.goto("https://staging.artsy.net") @@ -20,11 +21,16 @@ const doIt = async () => { await page.type('aria/textbox[name="Enter your password"]', process.env.FRESHNESS_TEST_PASSWORD) await page.click('aria/pushbutton[name="Log in"]') await page.waitForNavigation() - const { id: userId, accessToken: token } = await page.evaluate("sd.CURRENT_USER") + const { id: userId, accessToken } = await page.evaluate("sd.CURRENT_USER") + console.log("Logged in.") + return { userId, accessToken } +} +const doIt = async () => { + const { userId, accessToken } = await login() const metaphysics = new GraphQLClient("https://metaphysics-staging.artsy.net/v2", { headers: { - "X-Access-Token": token, + "X-Access-Token": accessToken, "X-User-Id": userId, }, }) From 8cf7bca35107f1870aa2051995056aa9b1e4a250 Mon Sep 17 00:00:00 2001 From: Pavlos Vinieratos Date: Wed, 24 Feb 2021 13:06:53 +0100 Subject: [PATCH 16/28] =?UTF-8?q?maximum=20=F0=9F=A4=A6=E2=80=8D=E2=99=82?= =?UTF-8?q?=EF=B8=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- metaphysics-queries-freshness-tests/test-freshness.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/metaphysics-queries-freshness-tests/test-freshness.js b/metaphysics-queries-freshness-tests/test-freshness.js index b3f589508f1..b6c7a74532c 100755 --- a/metaphysics-queries-freshness-tests/test-freshness.js +++ b/metaphysics-queries-freshness-tests/test-freshness.js @@ -124,7 +124,7 @@ const doIt = async () => { console.log("") } - executeRequests(queriesWithoutVars, "no-var queries") + await executeRequests(queriesWithoutVars, "no-var queries") executeRequests(queriesWithVars, "var queries") From 40609324c46a74f6b780fee39ba242d1feeec0ce Mon Sep 17 00:00:00 2001 From: Pavlos Vinieratos Date: Wed, 24 Feb 2021 14:05:13 +0100 Subject: [PATCH 17/28] works with more errors --- .../test-freshness.js | 40 ++++++++++--------- 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/metaphysics-queries-freshness-tests/test-freshness.js b/metaphysics-queries-freshness-tests/test-freshness.js index b6c7a74532c..0f5f738fbdf 100755 --- a/metaphysics-queries-freshness-tests/test-freshness.js +++ b/metaphysics-queries-freshness-tests/test-freshness.js @@ -86,9 +86,9 @@ const doIt = async () => { console.warn(`Skipping ${queriesWithCursor.length} queries with cursors`) const errors = [] - const executeRequests = async (requests, description, verbose = false) => { + const executeRequests = async (requests, description, options) => { const log = (...args) => { - if (verbose) { + if (options.verbose) { console.log(...args) } } @@ -98,21 +98,7 @@ const doIt = async () => { requests.map(async (req) => { try { log(req) - const response = await metaphysics.request(req, { - artworkID: "felipe-pantone-subtractive-variability-silk-robe-w-slash-j-balvin", - artworkSlug: "felipe-pantone-subtractive-variability-silk-robe-w-slash-j-balvin", - fairID: "london-art-fair-edit", - citySlug: "athens-greece", - artistInternalID: "4dd1584de0091e000100207c", // banksy - artistSlug: "banksy", - artistID: "banksy", - medium: "prints", - collectionID: "agnes-martin-lithographs", - viewingRoomID: "movart-mario-macilau-circle-of-memories", - isPad: false, - heroImageVersion: "NARROW", - count: 4, - }) + const response = await metaphysics.request(req, options.vars) stdout.write(".") log(JSON.stringify(response)) } catch (e) { @@ -126,11 +112,27 @@ const doIt = async () => { await executeRequests(queriesWithoutVars, "no-var queries") - executeRequests(queriesWithVars, "var queries") + await executeRequests(queriesWithVars, "var queries", { + vars: { + artworkID: "felipe-pantone-subtractive-variability-silk-robe-w-slash-j-balvin", + artworkSlug: "felipe-pantone-subtractive-variability-silk-robe-w-slash-j-balvin", + fairID: "london-art-fair-edit", + citySlug: "athens-greece", + artistInternalID: "4dd1584de0091e000100207c", // banksy + artistSlug: "banksy", + artistID: "banksy", + medium: "prints", + collectionID: "agnes-martin-lithographs", + viewingRoomID: "movart-mario-macilau-circle-of-memories", + isPad: false, + heroImageVersion: "NARROW", + count: 4, + }, + }) // end game if (errors.length !== 0) { - console.error(`${errors.length} queries failed!`) + console.error(`Oh noes! ${errors.length} queries failed!`) errors.map(({ request, error }) => { console.warn("- The following query:") console.log(request) From 2e2da6d5df12686c4e8047d1bb1715973acb9f76 Mon Sep 17 00:00:00 2001 From: Pavlos Vinieratos Date: Wed, 24 Feb 2021 14:20:58 +0100 Subject: [PATCH 18/28] typescript --- .../{test-freshness.js => test-freshness.ts} | 40 ++++++++++++------- 1 file changed, 25 insertions(+), 15 deletions(-) rename metaphysics-queries-freshness-tests/{test-freshness.js => test-freshness.ts} (80%) diff --git a/metaphysics-queries-freshness-tests/test-freshness.js b/metaphysics-queries-freshness-tests/test-freshness.ts similarity index 80% rename from metaphysics-queries-freshness-tests/test-freshness.js rename to metaphysics-queries-freshness-tests/test-freshness.ts index 0f5f738fbdf..7eeb4184cda 100755 --- a/metaphysics-queries-freshness-tests/test-freshness.js +++ b/metaphysics-queries-freshness-tests/test-freshness.ts @@ -1,24 +1,22 @@ -#!/usr/bin/env node - -// @ts-check +#!/usr/bin/env yarn ts-node require("dotenv").config() -const { GraphQLClient } = require("graphql-request") -const { values } = require("lodash") -const { exit, stdout } = require("process") -const puppeteer = require("puppeteer") +import { GraphQLClient } from "graphql-request" +import { values } from "lodash" +import { exit, stdout } from "process" +import puppeteer from "puppeteer" -const login = async () => { +const login = async (): Promise<{ userId: string; accessToken: string }> => { console.log("Logging in..") const browser = await puppeteer.launch({ headless: true }) const page = await browser.newPage() await page.goto("https://staging.artsy.net") await page.click('aria/button[name="Log in"]') await page.click('aria/textbox[name="Enter your email address"]') - await page.type('aria/textbox[name="Enter your email address"]', process.env.FRESHNESS_TEST_EMAIL) + await page.type('aria/textbox[name="Enter your email address"]', process.env.FRESHNESS_TEST_EMAIL ?? "missing email") await page.click('aria/textbox[name="Enter your password"]') - await page.type('aria/textbox[name="Enter your password"]', process.env.FRESHNESS_TEST_PASSWORD) + await page.type('aria/textbox[name="Enter your password"]', process.env.FRESHNESS_TEST_PASSWORD ?? "missing password") await page.click('aria/pushbutton[name="Log in"]') await page.waitForNavigation() const { id: userId, accessToken } = await page.evaluate("sd.CURRENT_USER") @@ -26,7 +24,7 @@ const login = async () => { return { userId, accessToken } } -const doIt = async () => { +const doIt = async (): Promise => { const { userId, accessToken } = await login() const metaphysics = new GraphQLClient("https://metaphysics-staging.artsy.net/v2", { headers: { @@ -35,7 +33,7 @@ const doIt = async () => { }, }) - const allQueries = values(require("../data/complete.queryMap.json")) + const allQueries = values(require("../data/complete.queryMap.json")) as string[] const problemQueries = allQueries.filter( (q) => q.includes("$conversationID") || @@ -85,9 +83,14 @@ const doIt = async () => { console.log(`Skipping ${allQueries.length - allNonTestQueries.length} test queries`) console.warn(`Skipping ${queriesWithCursor.length} queries with cursors`) - const errors = [] - const executeRequests = async (requests, description, options) => { - const log = (...args) => { + type Error = { request: string; error: string } + const errors: Error[] = [] as Error[] + const executeRequests = async ( + requests: string[], + description: string, + options: { verbose?: boolean; vars?: { [Var: string]: any } } = { verbose: false } + ) => { + const log = (...args: Parameters) => { if (options.verbose) { console.log(...args) } @@ -139,6 +142,7 @@ const doIt = async () => { console.warn("failed with error:") console.log(error) }) + console.error(`Again, ${errors.length} queries failed. Look above for more details.`) exit(-1) } console.log("Success! Our queries are so so fresh.") @@ -146,3 +150,9 @@ const doIt = async () => { } doIt() + +// make puppeteer run in circleci +// make tickets for: +// find some users that use the app a lot and test with their accounts in staging funky account in the backend that causes a different respose for different users +// move to other repo and put force +// keep running and print out all brokens things, dont stop at first From e99858aa9ff09061b77bf111e50286532a3c6ebc Mon Sep 17 00:00:00 2001 From: Pavlos Vinieratos Date: Wed, 24 Feb 2021 14:21:25 +0100 Subject: [PATCH 19/28] comments --- metaphysics-queries-freshness-tests/test-freshness.ts | 5 ----- 1 file changed, 5 deletions(-) diff --git a/metaphysics-queries-freshness-tests/test-freshness.ts b/metaphysics-queries-freshness-tests/test-freshness.ts index 7eeb4184cda..0ba3af1ab89 100755 --- a/metaphysics-queries-freshness-tests/test-freshness.ts +++ b/metaphysics-queries-freshness-tests/test-freshness.ts @@ -151,8 +151,3 @@ const doIt = async (): Promise => { doIt() -// make puppeteer run in circleci -// make tickets for: -// find some users that use the app a lot and test with their accounts in staging funky account in the backend that causes a different respose for different users -// move to other repo and put force -// keep running and print out all brokens things, dont stop at first From be3c8fa02818c57a550ed3bb2ceca641ffb7c640 Mon Sep 17 00:00:00 2001 From: Pavlos Vinieratos Date: Wed, 24 Feb 2021 14:30:06 +0100 Subject: [PATCH 20/28] try --- .circleci/config.yml | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 343f381f95d..2d4bb43df8c 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,5 +1,3 @@ -# .circleci/config.yml - version: 2.1 orbs: @@ -223,24 +221,21 @@ jobs: - run: name: Danger command: yarn danger ci --verbose + # replace all node/default with docker node? - run: name: Prevent Strictness Regressions command: node scripts/strictness-migration.js check-pr check-metaphysics-freshness: - executor: - name: node/default - tag: "14.13.1" + docker: + - image: circleci/node:14 steps: - checkout - - run: - name: apt-get update - command: apt-get update --fix-missing - puppeteer/install - install-node-modules - run: name: Check Metaphysics freshness - command: ./metaphysics-queries-freshness-tests/test-freshness.js + command: ./metaphysics-queries-freshness-tests/test-freshness.ts build-test-js: executor: From f379d96b113a083fafce7bb7c89626ca1e8d0cf9 Mon Sep 17 00:00:00 2001 From: Pavlos Vinieratos Date: Wed, 24 Feb 2021 14:34:56 +0100 Subject: [PATCH 21/28] hm --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 2d4bb43df8c..bc0e4eba36f 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -221,7 +221,6 @@ jobs: - run: name: Danger command: yarn danger ci --verbose - # replace all node/default with docker node? - run: name: Prevent Strictness Regressions command: node scripts/strictness-migration.js check-pr @@ -232,6 +231,7 @@ jobs: steps: - checkout - puppeteer/install + - generate-checksums - install-node-modules - run: name: Check Metaphysics freshness From d52a81034843b7b11378c2efd8d18ca14e83e81a Mon Sep 17 00:00:00 2001 From: Pavlos Vinieratos Date: Wed, 24 Feb 2021 14:36:48 +0100 Subject: [PATCH 22/28] lets go --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index bc0e4eba36f..b28939ca1c4 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -235,7 +235,7 @@ jobs: - install-node-modules - run: name: Check Metaphysics freshness - command: ./metaphysics-queries-freshness-tests/test-freshness.ts + command: yarn ts-node ./metaphysics-queries-freshness-tests/test-freshness.ts build-test-js: executor: From c31195d9a11795dce8b5d524dc11e48d01da1a41 Mon Sep 17 00:00:00 2001 From: Pavlos Vinieratos Date: Wed, 24 Feb 2021 14:39:13 +0100 Subject: [PATCH 23/28] boom --- .circleci/config.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index b28939ca1c4..2bf7dc818b6 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -227,12 +227,15 @@ jobs: check-metaphysics-freshness: docker: - - image: circleci/node:14 + - image: circleci/node:14.13.1 steps: - checkout - puppeteer/install - generate-checksums - install-node-modules + - run: + name: Generate queries json + command: yarn relay - run: name: Check Metaphysics freshness command: yarn ts-node ./metaphysics-queries-freshness-tests/test-freshness.ts From b48ba61cec4ee992cbfbb84fab9d8d990c5ab4f0 Mon Sep 17 00:00:00 2001 From: Pavlos Vinieratos Date: Wed, 24 Feb 2021 14:40:20 +0100 Subject: [PATCH 24/28] always run --- .circleci/config.yml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 2bf7dc818b6..653ea88c189 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -426,11 +426,7 @@ workflows: test-build-deploy: jobs: - - check-metaphysics-freshness: - filters: - branches: - only: - - mp-queries-tester + - check-metaphysics-freshness - check-pr: filters: branches: From 18a7636cb57719a32ef4421ef3926912edfd0c21 Mon Sep 17 00:00:00 2001 From: Pavlos Vinieratos Date: Wed, 24 Feb 2021 19:07:29 +0100 Subject: [PATCH 25/28] again --- .circleci/config.yml | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 653ea88c189..38bd7ffa049 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -4,7 +4,6 @@ orbs: node: circleci/node@1.1.6 queue: eddiewebb/queue@1.0.110 horizon: artsy/release@0.0.1 - puppeteer: threetreeslight/puppeteer@0.1.2 commands: await-previous-builds: @@ -230,7 +229,16 @@ jobs: - image: circleci/node:14.13.1 steps: - checkout - - puppeteer/install + - run: + name: Install Headless Chrome dependencies for puppeteer + # from https://github.com/threetreeslight/puppeteer-orb/blob/master/orb.yml + command: | + sudo apt-get install --fix-missing -yq \ + gconf-service libasound2 libatk1.0-0 libatk-bridge2.0-0 libc6 libcairo2 libcups2 libdbus-1-3 \ + libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 \ + libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 \ + libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 ca-certificates \ + fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils wget - generate-checksums - install-node-modules - run: From 1b1c511d66daf336839b529915c420ae9edc3aba Mon Sep 17 00:00:00 2001 From: Pavlos Vinieratos Date: Fri, 26 Feb 2021 11:35:55 +0100 Subject: [PATCH 26/28] again --- .circleci/config.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.circleci/config.yml b/.circleci/config.yml index 38bd7ffa049..62984178007 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -229,6 +229,9 @@ jobs: - image: circleci/node:14.13.1 steps: - checkout + - run: + name: apt-get update + command: apt-get update --fix-missing - run: name: Install Headless Chrome dependencies for puppeteer # from https://github.com/threetreeslight/puppeteer-orb/blob/master/orb.yml From 9ecbed4ef47d926f7914454aefaaebcdc2e5b8d3 Mon Sep 17 00:00:00 2001 From: Pavlos Vinieratos Date: Fri, 26 Feb 2021 12:09:13 +0100 Subject: [PATCH 27/28] ok? --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 62984178007..8ded8e8eb9e 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -231,7 +231,7 @@ jobs: - checkout - run: name: apt-get update - command: apt-get update --fix-missing + command: sudo apt-get update --fix-missing - run: name: Install Headless Chrome dependencies for puppeteer # from https://github.com/threetreeslight/puppeteer-orb/blob/master/orb.yml From 9a17cc83e235b98261a62121da0d046b5db31a37 Mon Sep 17 00:00:00 2001 From: Pavlos Vinieratos Date: Fri, 26 Feb 2021 18:05:02 +0100 Subject: [PATCH 28/28] use new node from orb --- .circleci/config.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 8ded8e8eb9e..3d9be549ee6 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -225,8 +225,9 @@ jobs: command: node scripts/strictness-migration.js check-pr check-metaphysics-freshness: - docker: - - image: circleci/node:14.13.1 + executor: + name: node/default + tag: "14.13.1" steps: - checkout - run: