diff --git a/.circleci/config.yml b/.circleci/config.yml index 1c8b9845384..d59b137d19f 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -33,12 +33,12 @@ aliases: - &restore_deps_cache keys: - - v38-dependency-cache-{{ .Branch }}-{{ checksum "yarn.lock" }} - - v38-dependency-cache-{{ .Branch }} - - v38-dependency-cache + - v39-dependency-cache-{{ .Branch }}-{{ checksum "yarn.lock" }} + - v39-dependency-cache-{{ .Branch }} + - v39-dependency-cache - &save_deps_cache - key: v38-dependency-cache-{{ .Branch }}-{{ checksum "yarn.lock" }} + key: v39-dependency-cache-{{ .Branch }}-{{ checksum "yarn.lock" }} paths: - node_modules - packages/app/node_modules @@ -63,40 +63,40 @@ aliases: - &restore_standalone_deps_cache keys: - - v38-standalone-dependency-cache-{{ .Branch }}-{{ checksum + - v39-standalone-dependency-cache-{{ .Branch }}-{{ checksum "standalone-packages/codesandbox-browserfs/yarn.lock" }} - - v38-standalone-dependency-cache-{{ .Branch }} - - v38-standalone-dependency-cache + - v39-standalone-dependency-cache-{{ .Branch }} + - v39-standalone-dependency-cache - &save_standalone_deps_cache key: - v38-standalone-dependency-cache-{{ .Branch }}-{{ checksum + v39-standalone-dependency-cache-{{ .Branch }}-{{ checksum "standalone-packages/codesandbox-browserfs/yarn.lock" }} paths: - standalone-packages/codesandbox-browserfs/node_modules - &restore_prod_result key: - v38-prod-build-result-{{ .Environment.CIRCLE_BRANCH + v39-prod-build-result-{{ .Environment.CIRCLE_BRANCH }}-{{.Environment.CIRCLE_SHA1 }} - &save_prod_build_cache key: - v38-prod-build-cache-{{ .Environment.CIRCLE_BRANCH + v39-prod-build-cache-{{ .Environment.CIRCLE_BRANCH }}-{{.Environment.CIRCLE_SHA1 }} paths: - packages/app/node_modules/.cache - &restore_prod_build_cache keys: - - v38-prod-build-cache-{{ .Environment.CIRCLE_BRANCH + - v39-prod-build-cache-{{ .Environment.CIRCLE_BRANCH }}-{{.Environment.CIRCLE_SHA1 }} - - v38-prod-build-cache-{{ .Environment.CIRCLE_BRANCH }}- - - v38-prod-build-cache-master- + - v39-prod-build-cache-{{ .Environment.CIRCLE_BRANCH }}- + - v39-prod-build-cache-master- - &save_prod_result key: - v38-prod-build-result-{{ .Environment.CIRCLE_BRANCH }}-{{ + v39-prod-build-result-{{ .Environment.CIRCLE_BRANCH }}-{{ .Environment.CIRCLE_SHA1 }} paths: - ./www @@ -139,14 +139,14 @@ commands: steps: - restore_cache: keys: - - v38-source-cache-{{ .Branch }}-{{ .Revision }} - - v38-source-cache-{{ .Branch }}- - - v38-source-cache- + - v39-source-cache-{{ .Branch }}-{{ .Revision }} + - v39-source-cache-{{ .Branch }}- + - v39-source-cache- - checkout - save_cache: - key: v38-source-cache-{{ .Branch }}-{{ .Revision }} + key: v39-source-cache-{{ .Branch }}-{{ .Revision }} paths: - '.git' build_deps: diff --git a/packages/app/integration-tests/browser-tests/browsers.test.js b/packages/app/integration-tests/browser-tests/browsers.test.js deleted file mode 100644 index 8796ce46424..00000000000 --- a/packages/app/integration-tests/browser-tests/browsers.test.js +++ /dev/null @@ -1,130 +0,0 @@ -const webdriver = require('selenium-webdriver'); - -const hash = require('child_process') - .execSync('git rev-parse --short HEAD') - .toString(); - -const delay = ms => - new Promise(resolve => { - setTimeout(() => { - resolve(); - }, ms); - }); - -function getCapabilities(browserInfo) { - return { - ...browserInfo, - 'browserstack.user': process.env.BROWSER_STACK_USER, - 'browserstack.key': process.env.BROWSER_STACK_KEY, - 'browserstack.local': 'true', - 'browserstack.debug': 'true', - 'browserstack.console': 'errors', - 'browserstack.networkLogs': true, - build: hash, - }; -} - -function getDriver(capabilities) { - return new webdriver.Builder() - .usingServer('http://hub-cloud.browserstack.com/wd/hub') - .withCapabilities(capabilities) - .build(); -} - -function testPageWitCapabilities(capabilities) { - const driver = getDriver(getCapabilities(capabilities)); - // Test if a sandbox can be loaded on IE11 - return driver - .get( - 'http://localhost:3000/#github/codesandbox/integration-sandboxes/tree/master/new' - ) - .then(async () => { - const element = webdriver.By.css('h1'); - await driver.wait(webdriver.until.elementLocated(element), 60000); - driver.quit(); - }); -} - -const PARALLEL_INDEX = Number.parseInt(process.env.CIRCLE_NODE_INDEX, 10) || 0; - -const usedDescribe = process.env.BROWSER_STACK_KEY ? describe : describe.skip; -usedDescribe('browser-tests', () => { - if (PARALLEL_INDEX === 0) { - test.skip('ie11', async () => { - // Input capabilities - const capabilities = { - browserName: 'IE', - browser_version: '11.0', - os: 'Windows', - os_version: '10', - resolution: '1024x768', - }; - - await testPageWitCapabilities(capabilities); - }, 130000); - - test.skip('ios', async () => { - // Input capabilities - const capabilities = { - browserName: 'iPhone', - device: 'iPhone X', - real_mobile: 'true', - os_version: '11.0', - }; - - await testPageWitCapabilities(capabilities); - }, 130000); - - test('firefox', async () => { - // Input capabilities - const capabilities = { - browserName: 'Firefox', - browser_version: '58.0', - os: 'Windows', - os_version: '10', - resolution: '1024x768', - }; - try { - await testPageWitCapabilities(capabilities); - } catch (e) { - await delay(10000); - // Retry - await testPageWitCapabilities(capabilities); - } - }, 130000); - - test('safari', async () => { - // Input capabilities - const capabilities = { - browserName: 'Safari', - browser_version: '11.0', - os: 'OS X', - os_version: 'High Sierra', - resolution: '1024x768', - }; - try { - await testPageWitCapabilities(capabilities); - } catch (e) { - await delay(10000); - // Retry - await testPageWitCapabilities(capabilities); - } - }, 130000); - - test.skip('android', async () => { - // Input capabilities - const capabilities = { - browserName: 'android', - device: 'Samsung Galaxy S8', - real_mobile: 'true', - os_version: '7.0', - }; - - await testPageWitCapabilities(capabilities); - }, 130000); - } else { - test('it just works', () => { - expect(1).toBe(1); - }); - } -}); diff --git a/packages/app/integration-tests/tests/__image_snapshots__/1oknw8q8zq-snap.png b/packages/app/integration-tests/tests/__image_snapshots__/1oknw8q8zq-snap.png index e1797a83c83..118555b4032 100644 Binary files a/packages/app/integration-tests/tests/__image_snapshots__/1oknw8q8zq-snap.png and b/packages/app/integration-tests/tests/__image_snapshots__/1oknw8q8zq-snap.png differ diff --git a/packages/app/integration-tests/tests/__image_snapshots__/2ppkvzx570-snap.png b/packages/app/integration-tests/tests/__image_snapshots__/2ppkvzx570-snap.png index 7ab0ba398fd..1047f859476 100644 Binary files a/packages/app/integration-tests/tests/__image_snapshots__/2ppkvzx570-snap.png and b/packages/app/integration-tests/tests/__image_snapshots__/2ppkvzx570-snap.png differ diff --git a/packages/app/integration-tests/tests/__image_snapshots__/31kn7voz4q-snap.png b/packages/app/integration-tests/tests/__image_snapshots__/31kn7voz4q-snap.png index 63d9c523f92..1ff4c29ae30 100644 Binary files a/packages/app/integration-tests/tests/__image_snapshots__/31kn7voz4q-snap.png and b/packages/app/integration-tests/tests/__image_snapshots__/31kn7voz4q-snap.png differ diff --git a/packages/app/integration-tests/tests/__image_snapshots__/4j7m47vlm4-snap.png b/packages/app/integration-tests/tests/__image_snapshots__/4j7m47vlm4-snap.png index 00f9883a45a..217db0e0b2e 100644 Binary files a/packages/app/integration-tests/tests/__image_snapshots__/4j7m47vlm4-snap.png and b/packages/app/integration-tests/tests/__image_snapshots__/4j7m47vlm4-snap.png differ diff --git a/packages/app/integration-tests/tests/__image_snapshots__/98o3k45m8p-snap.png b/packages/app/integration-tests/tests/__image_snapshots__/98o3k45m8p-snap.png index b4f9f6b9e2f..0918a0a44e2 100644 Binary files a/packages/app/integration-tests/tests/__image_snapshots__/98o3k45m8p-snap.png and b/packages/app/integration-tests/tests/__image_snapshots__/98o3k45m8p-snap.png differ diff --git a/packages/app/integration-tests/tests/__image_snapshots__/CompuIves-codesandbox-presentation-snap.png b/packages/app/integration-tests/tests/__image_snapshots__/CompuIves-codesandbox-presentation-snap.png index b7c22761822..963f7eddb05 100644 Binary files a/packages/app/integration-tests/tests/__image_snapshots__/CompuIves-codesandbox-presentation-snap.png and b/packages/app/integration-tests/tests/__image_snapshots__/CompuIves-codesandbox-presentation-snap.png differ diff --git a/packages/app/integration-tests/tests/__image_snapshots__/algolia-doc-onboarding-demos-angular-media-snap.png b/packages/app/integration-tests/tests/__image_snapshots__/algolia-doc-onboarding-demos-angular-media-snap.png index ca79bb9c766..ee71ea3ed2a 100644 Binary files a/packages/app/integration-tests/tests/__image_snapshots__/algolia-doc-onboarding-demos-angular-media-snap.png and b/packages/app/integration-tests/tests/__image_snapshots__/algolia-doc-onboarding-demos-angular-media-snap.png differ diff --git a/packages/app/integration-tests/tests/__image_snapshots__/angular-snap.png b/packages/app/integration-tests/tests/__image_snapshots__/angular-snap.png index 160c115bb18..d7d21fe9466 100644 Binary files a/packages/app/integration-tests/tests/__image_snapshots__/angular-snap.png and b/packages/app/integration-tests/tests/__image_snapshots__/angular-snap.png differ diff --git a/packages/app/integration-tests/tests/__image_snapshots__/circle-svg-snap.png b/packages/app/integration-tests/tests/__image_snapshots__/circle-svg-snap.png index e0a18ff2bde..4baa5594680 100644 Binary files a/packages/app/integration-tests/tests/__image_snapshots__/circle-svg-snap.png and b/packages/app/integration-tests/tests/__image_snapshots__/circle-svg-snap.png differ diff --git a/packages/app/integration-tests/tests/__image_snapshots__/cssinjs-egghead-templates-and-variables-snap.png b/packages/app/integration-tests/tests/__image_snapshots__/cssinjs-egghead-templates-and-variables-snap.png index f60666cbd0a..df37254de5a 100644 Binary files a/packages/app/integration-tests/tests/__image_snapshots__/cssinjs-egghead-templates-and-variables-snap.png and b/packages/app/integration-tests/tests/__image_snapshots__/cssinjs-egghead-templates-and-variables-snap.png differ diff --git a/packages/app/integration-tests/tests/__image_snapshots__/faceyspacey-redux-first-router-codesandbox-snap.png b/packages/app/integration-tests/tests/__image_snapshots__/faceyspacey-redux-first-router-codesandbox-snap.png index a7ff14b1070..82c75ae6996 100644 Binary files a/packages/app/integration-tests/tests/__image_snapshots__/faceyspacey-redux-first-router-codesandbox-snap.png and b/packages/app/integration-tests/tests/__image_snapshots__/faceyspacey-redux-first-router-codesandbox-snap.png differ diff --git a/packages/app/integration-tests/tests/__image_snapshots__/fo3c0n-snap.png b/packages/app/integration-tests/tests/__image_snapshots__/fo3c0n-snap.png new file mode 100644 index 00000000000..8dc7031d497 Binary files /dev/null and b/packages/app/integration-tests/tests/__image_snapshots__/fo3c0n-snap.png differ diff --git a/packages/app/integration-tests/tests/__image_snapshots__/fo3c0n.png b/packages/app/integration-tests/tests/__image_snapshots__/fo3c0n.png new file mode 100644 index 00000000000..8dc7031d497 Binary files /dev/null and b/packages/app/integration-tests/tests/__image_snapshots__/fo3c0n.png differ diff --git a/packages/app/integration-tests/tests/__image_snapshots__/j2wpjwqj93-snap.png b/packages/app/integration-tests/tests/__image_snapshots__/j2wpjwqj93-snap.png index dc4844a5d4b..b7cfac1b0e8 100644 Binary files a/packages/app/integration-tests/tests/__image_snapshots__/j2wpjwqj93-snap.png and b/packages/app/integration-tests/tests/__image_snapshots__/j2wpjwqj93-snap.png differ diff --git a/packages/app/integration-tests/tests/__image_snapshots__/k3q1zjjml5-snap.png b/packages/app/integration-tests/tests/__image_snapshots__/k3q1zjjml5-snap.png index ba285556c52..6b065ad663d 100644 Binary files a/packages/app/integration-tests/tests/__image_snapshots__/k3q1zjjml5-snap.png and b/packages/app/integration-tests/tests/__image_snapshots__/k3q1zjjml5-snap.png differ diff --git a/packages/app/integration-tests/tests/__image_snapshots__/lp5rjr0z4z-snap.png b/packages/app/integration-tests/tests/__image_snapshots__/lp5rjr0z4z-snap.png index aad4f053dee..d3dc3a322e7 100644 Binary files a/packages/app/integration-tests/tests/__image_snapshots__/lp5rjr0z4z-snap.png and b/packages/app/integration-tests/tests/__image_snapshots__/lp5rjr0z4z-snap.png differ diff --git a/packages/app/integration-tests/tests/__image_snapshots__/mZRjw05yp-snap.png b/packages/app/integration-tests/tests/__image_snapshots__/mZRjw05yp-snap.png index 8366f9c0557..b9d9027b1ad 100644 Binary files a/packages/app/integration-tests/tests/__image_snapshots__/mZRjw05yp-snap.png and b/packages/app/integration-tests/tests/__image_snapshots__/mZRjw05yp-snap.png differ diff --git a/packages/app/integration-tests/tests/__image_snapshots__/n5wy74w8vl-snap.png b/packages/app/integration-tests/tests/__image_snapshots__/n5wy74w8vl-snap.png index 9e3b2b2fa90..140a6e36562 100644 Binary files a/packages/app/integration-tests/tests/__image_snapshots__/n5wy74w8vl-snap.png and b/packages/app/integration-tests/tests/__image_snapshots__/n5wy74w8vl-snap.png differ diff --git a/packages/app/integration-tests/tests/__image_snapshots__/nOymMxyY-snap.png b/packages/app/integration-tests/tests/__image_snapshots__/nOymMxyY-snap.png index 35d75d92442..013881db5c5 100644 Binary files a/packages/app/integration-tests/tests/__image_snapshots__/nOymMxyY-snap.png and b/packages/app/integration-tests/tests/__image_snapshots__/nOymMxyY-snap.png differ diff --git a/packages/app/integration-tests/tests/__image_snapshots__/new-snap.png b/packages/app/integration-tests/tests/__image_snapshots__/new-snap.png index fa4e205e512..9eedad04a68 100644 Binary files a/packages/app/integration-tests/tests/__image_snapshots__/new-snap.png and b/packages/app/integration-tests/tests/__image_snapshots__/new-snap.png differ diff --git a/packages/app/integration-tests/tests/__image_snapshots__/o29j95wx9-snap.png b/packages/app/integration-tests/tests/__image_snapshots__/o29j95wx9-snap.png index 9c89a0fc9aa..7fd05cf91bc 100644 Binary files a/packages/app/integration-tests/tests/__image_snapshots__/o29j95wx9-snap.png and b/packages/app/integration-tests/tests/__image_snapshots__/o29j95wx9-snap.png differ diff --git a/packages/app/integration-tests/tests/__image_snapshots__/pm79km5lmj-snap.png b/packages/app/integration-tests/tests/__image_snapshots__/pm79km5lmj-snap.png index 08dab375261..7cd425c4496 100644 Binary files a/packages/app/integration-tests/tests/__image_snapshots__/pm79km5lmj-snap.png and b/packages/app/integration-tests/tests/__image_snapshots__/pm79km5lmj-snap.png differ diff --git a/packages/app/integration-tests/tests/__image_snapshots__/react-ts-snap.png b/packages/app/integration-tests/tests/__image_snapshots__/react-ts-snap.png index fa4e205e512..9eedad04a68 100644 Binary files a/packages/app/integration-tests/tests/__image_snapshots__/react-ts-snap.png and b/packages/app/integration-tests/tests/__image_snapshots__/react-ts-snap.png differ diff --git a/packages/app/integration-tests/tests/__image_snapshots__/reduxjs-redux-examples-real-world-snap.png b/packages/app/integration-tests/tests/__image_snapshots__/reduxjs-redux-examples-real-world-snap.png index b2293a31925..1bcc251be4f 100644 Binary files a/packages/app/integration-tests/tests/__image_snapshots__/reduxjs-redux-examples-real-world-snap.png and b/packages/app/integration-tests/tests/__image_snapshots__/reduxjs-redux-examples-real-world-snap.png differ diff --git a/packages/app/integration-tests/tests/__image_snapshots__/reduxjs-redux-examples-todomvc-snap.png b/packages/app/integration-tests/tests/__image_snapshots__/reduxjs-redux-examples-todomvc-snap.png index 64acb2df492..8ecbe6b9f21 100644 Binary files a/packages/app/integration-tests/tests/__image_snapshots__/reduxjs-redux-examples-todomvc-snap.png and b/packages/app/integration-tests/tests/__image_snapshots__/reduxjs-redux-examples-todomvc-snap.png differ diff --git a/packages/app/integration-tests/tests/__image_snapshots__/scss-bulma-ikgrv-snap.png b/packages/app/integration-tests/tests/__image_snapshots__/scss-bulma-ikgrv-snap.png index c980b7e74c2..2a98f9d61a7 100644 Binary files a/packages/app/integration-tests/tests/__image_snapshots__/scss-bulma-ikgrv-snap.png and b/packages/app/integration-tests/tests/__image_snapshots__/scss-bulma-ikgrv-snap.png differ diff --git a/packages/app/integration-tests/tests/__image_snapshots__/scss-mixins-snap.png b/packages/app/integration-tests/tests/__image_snapshots__/scss-mixins-snap.png index 673468e03ce..b7c3a9eca0b 100644 Binary files a/packages/app/integration-tests/tests/__image_snapshots__/scss-mixins-snap.png and b/packages/app/integration-tests/tests/__image_snapshots__/scss-mixins-snap.png differ diff --git a/packages/app/integration-tests/tests/__image_snapshots__/sebn6-snap.png b/packages/app/integration-tests/tests/__image_snapshots__/sebn6-snap.png index 25454939578..10e81980c6a 100644 Binary files a/packages/app/integration-tests/tests/__image_snapshots__/sebn6-snap.png and b/packages/app/integration-tests/tests/__image_snapshots__/sebn6-snap.png differ diff --git a/packages/app/integration-tests/tests/__image_snapshots__/svelte-snap.png b/packages/app/integration-tests/tests/__image_snapshots__/svelte-snap.png index 5075aec2dcd..442290544d4 100644 Binary files a/packages/app/integration-tests/tests/__image_snapshots__/svelte-snap.png and b/packages/app/integration-tests/tests/__image_snapshots__/svelte-snap.png differ diff --git a/packages/app/integration-tests/tests/__image_snapshots__/utmms-snap.png b/packages/app/integration-tests/tests/__image_snapshots__/utmms-snap.png index b1c456b3d53..811fb063d90 100644 Binary files a/packages/app/integration-tests/tests/__image_snapshots__/utmms-snap.png and b/packages/app/integration-tests/tests/__image_snapshots__/utmms-snap.png differ diff --git a/packages/app/integration-tests/tests/__image_snapshots__/vVoQVk78-snap.png b/packages/app/integration-tests/tests/__image_snapshots__/vVoQVk78-snap.png index 86018636de2..d8d590e634e 100644 Binary files a/packages/app/integration-tests/tests/__image_snapshots__/vVoQVk78-snap.png and b/packages/app/integration-tests/tests/__image_snapshots__/vVoQVk78-snap.png differ diff --git a/packages/app/integration-tests/tests/__image_snapshots__/vanilla-snap.png b/packages/app/integration-tests/tests/__image_snapshots__/vanilla-snap.png index 6ec7b41e3fb..5831c8c9a90 100644 Binary files a/packages/app/integration-tests/tests/__image_snapshots__/vanilla-snap.png and b/packages/app/integration-tests/tests/__image_snapshots__/vanilla-snap.png differ diff --git a/packages/app/integration-tests/tests/__image_snapshots__/vue-2-css-module-vuzkt-snap.png b/packages/app/integration-tests/tests/__image_snapshots__/vue-2-css-module-vuzkt-snap.png index 3948feb61d0..1a40ce2d25b 100644 Binary files a/packages/app/integration-tests/tests/__image_snapshots__/vue-2-css-module-vuzkt-snap.png and b/packages/app/integration-tests/tests/__image_snapshots__/vue-2-css-module-vuzkt-snap.png differ diff --git a/packages/app/integration-tests/tests/__image_snapshots__/vue-3-basics-program-easily-snap.png b/packages/app/integration-tests/tests/__image_snapshots__/vue-3-basics-program-easily-snap.png index ed0963c262e..04eb610b28d 100644 Binary files a/packages/app/integration-tests/tests/__image_snapshots__/vue-3-basics-program-easily-snap.png and b/packages/app/integration-tests/tests/__image_snapshots__/vue-3-basics-program-easily-snap.png differ diff --git a/packages/app/integration-tests/tests/__image_snapshots__/vue-snap.png b/packages/app/integration-tests/tests/__image_snapshots__/vue-snap.png index fdc72ccb85e..ab238242de4 100644 Binary files a/packages/app/integration-tests/tests/__image_snapshots__/vue-snap.png and b/packages/app/integration-tests/tests/__image_snapshots__/vue-snap.png differ diff --git a/packages/app/integration-tests/tests/__image_snapshots__/vx55c-snap.png b/packages/app/integration-tests/tests/__image_snapshots__/vx55c-snap.png index e3f0ca5f9da..843b29e8076 100644 Binary files a/packages/app/integration-tests/tests/__image_snapshots__/vx55c-snap.png and b/packages/app/integration-tests/tests/__image_snapshots__/vx55c-snap.png differ diff --git a/packages/app/integration-tests/tests/__image_snapshots__/xp5qy8r93q-snap.png b/packages/app/integration-tests/tests/__image_snapshots__/xp5qy8r93q-snap.png index b6b0535985b..fdef48cbcde 100644 Binary files a/packages/app/integration-tests/tests/__image_snapshots__/xp5qy8r93q-snap.png and b/packages/app/integration-tests/tests/__image_snapshots__/xp5qy8r93q-snap.png differ diff --git a/packages/app/integration-tests/tests/__image_snapshots__/y26rj99yov-snap.png b/packages/app/integration-tests/tests/__image_snapshots__/y26rj99yov-snap.png index 3982f5d0eb1..dc667d1fdba 100644 Binary files a/packages/app/integration-tests/tests/__image_snapshots__/y26rj99yov-snap.png and b/packages/app/integration-tests/tests/__image_snapshots__/y26rj99yov-snap.png differ diff --git a/packages/app/integration-tests/tests/__image_snapshots__/ymjwwrw2rj-snap.png b/packages/app/integration-tests/tests/__image_snapshots__/ymjwwrw2rj-snap.png index f7ea19de95d..83394836b1a 100644 Binary files a/packages/app/integration-tests/tests/__image_snapshots__/ymjwwrw2rj-snap.png and b/packages/app/integration-tests/tests/__image_snapshots__/ymjwwrw2rj-snap.png differ diff --git a/packages/app/integration-tests/tests/__image_snapshots__/zw9zjy0683-snap.png b/packages/app/integration-tests/tests/__image_snapshots__/zw9zjy0683-snap.png index c9596d01fb9..ea2b2082e35 100644 Binary files a/packages/app/integration-tests/tests/__image_snapshots__/zw9zjy0683-snap.png and b/packages/app/integration-tests/tests/__image_snapshots__/zw9zjy0683-snap.png differ diff --git a/packages/app/integration-tests/tests/__image_snapshots__/zx22owojr3-snap.png b/packages/app/integration-tests/tests/__image_snapshots__/zx22owojr3-snap.png index fcad39e19af..7ccb4c6f373 100644 Binary files a/packages/app/integration-tests/tests/__image_snapshots__/zx22owojr3-snap.png and b/packages/app/integration-tests/tests/__image_snapshots__/zx22owojr3-snap.png differ diff --git a/packages/app/integration-tests/tests/sandboxes.test.js b/packages/app/integration-tests/tests/sandboxes.test.js index 8bac3fde91e..9a9b9b55e19 100644 --- a/packages/app/integration-tests/tests/sandboxes.test.js +++ b/packages/app/integration-tests/tests/sandboxes.test.js @@ -10,9 +10,9 @@ const SANDBOXES = [ 'vue', 'svelte', 'react-ts', - { id: 'reduxjs-redux-examples-todomvc', threshold: 0.04 }, + 'reduxjs-redux-examples-todomvc', 'vVoQVk78', - 'faceyspacey-redux-first-router-codesandbox', + { id: 'faceyspacey-redux-first-router-codesandbox', threshold: 0.08 }, 'mZRjw05yp', 'o29j95wx9', 'k3q1zjjml5', @@ -31,14 +31,14 @@ const SANDBOXES = [ 'vanilla', 'n5wy74w8vl', // material-ui generated demo 'algolia-doc-onboarding-demos-angular-media', // algolia angular demo - { id: 'ymjwwrw2rj', threshold: 0.05 }, // empty path - { id: '98o3k45m8p', threshold: 0.05 }, // direct path test + 'ymjwwrw2rj', // empty path + '98o3k45m8p', // direct path test 'pm79km5lmj', // babel macros with styled components 'j2wpjwqj93', // sandbox with need of transpiling in node_modules '1oknw8q8zq', // Parcel with async function (no regeneratorRuntime error) - '31kn7voz4q', // cxjs + { id: '31kn7voz4q', threshold: 0.07 }, // cxjs 'zw9zjy0683', // aurelia - 'zx22owojr3', // vue v-slot test + { id: 'zx22owojr3', threshold: 0.07 }, // vue v-slot test // '4888omqqz7', // material-ui https://github.com/codesandbox/codesandbox-client/issues/1741, 'sebn6', // babel plugin dynamically downloaded 'utmms', // babel plugin pragmatic-jsx which requires other babel plugin @@ -78,7 +78,7 @@ describe('sandboxes', () => { sandboxesToTest.forEach(sandbox => { const id = sandbox.id || sandbox; - const threshold = sandbox.threshold || 0.01; + const threshold = sandbox.threshold || 0.05; const loadTimeout = ms(TIMEOUT); const testTimeout = loadTimeout * ATTEMPTS + ms(20); @@ -94,10 +94,9 @@ describe('sandboxes', () => { try { expect(screenshot).toMatchImageSnapshot({ - customDiffConfig: { - threshold, - }, - customSnapshotIdentifier: identifier, + failureThreshold: threshold, // Percentage threshold for entire comparison + failureThresholdType: 'percent', + customSnapshotIdentifier: `${identifier}-snap`, }); } catch (err) { const screenshotFilePath = path.join( diff --git a/packages/app/package.json b/packages/app/package.json index 5402df4e517..3b07eae8c7a 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -340,6 +340,7 @@ "opn": "4.0.2", "path-exists": "3.0.0", "path-override-webpack-plugin": "^0.1.2", + "puppeteer": "^18.1.0", "postcss-flexbugs-fixes": "^4.1.0", "postcss-import": "^12.0.1", "postcss-loader": "3.0.0", diff --git a/yarn.lock b/yarn.lock index ef57222527d..4ef95c423f5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5653,6 +5653,13 @@ dependencies: "@types/yargs-parser" "*" +"@types/yauzl@^2.9.1": + version "2.10.3" + resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.10.3.tgz#e9b2808b4f109504a03cda958259876f61017999" + integrity sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q== + dependencies: + "@types/node" "*" + "@types/zen-observable@^0.8.0": version "0.8.0" resolved "https://registry.yarnpkg.com/@types/zen-observable/-/zen-observable-0.8.0.tgz#8b63ab7f1aa5321248aad5ac890a485656dcea4d" @@ -8279,6 +8286,11 @@ bser@^2.0.0: dependencies: node-int64 "^0.4.0" +buffer-crc32@~0.2.3: + version "0.2.13" + resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" + integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ== + buffer-equal@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-1.0.1.tgz#2f7651be5b1b3f057fcd6e7ee16cf34767077d90" @@ -8312,7 +8324,7 @@ buffer@^4.3.0: ieee754 "^1.1.4" isarray "^1.0.0" -buffer@^5.5.0: +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== @@ -9890,6 +9902,13 @@ cross-env@^6.0.0: dependencies: cross-spawn "^7.0.0" +cross-fetch@3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.5.tgz#e1389f44d9e7ba767907f7af8454787952ab534f" + integrity sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw== + dependencies: + node-fetch "2.6.7" + cross-fetch@^3.0.6, cross-fetch@^3.1.5: version "3.1.8" resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.8.tgz#0327eba65fd68a7d119f8fb2bf9334a1a7956f82" @@ -10270,7 +10289,7 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.6, debug@^2.6. dependencies: ms "2.0.0" -debug@4, debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.2.0, debug@^4.3.1, debug@^4.3.3, debug@^4.3.4: +debug@4, debug@4.3.4, debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.2.0, debug@^4.3.1, debug@^4.3.3, debug@^4.3.4: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== @@ -10564,6 +10583,11 @@ detect-port@^1.1.1: address "^1.0.1" debug "^2.6.0" +devtools-protocol@0.0.1045489: + version "0.0.1045489" + resolved "https://registry.yarnpkg.com/devtools-protocol/-/devtools-protocol-0.0.1045489.tgz#f959ad560b05acd72d55644bc3fb8168a83abf28" + integrity sha512-D+PTmWulkuQW4D1NTiCRCFxF7pQPn0hgp4YyX4wAQ6xYXKOadSWPR3ENGDQ47MW/Ewc9v2rpC/UEEGahgBYpSQ== + diacritic@0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/diacritic/-/diacritic-0.0.2.tgz#fc2a887b5a5bc0a0a854fb614c7c2f209061ee04" @@ -12131,6 +12155,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.1: + 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" + eyes@0.1.x: version "0.1.8" resolved "https://registry.yarnpkg.com/eyes/-/eyes-0.1.8.tgz#62cf120234c683785d902348a800ef3e0cc20bc0" @@ -12299,6 +12334,13 @@ fbjs@^3.0.0: setimmediate "^1.0.5" ua-parser-js "^1.0.35" +fd-slicer@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" + integrity sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g== + dependencies: + pend "~1.2.0" + fetch-jsonp@^1.0.6: version "1.1.3" resolved "https://registry.yarnpkg.com/fetch-jsonp/-/fetch-jsonp-1.1.3.tgz#9eb9e585ba08aaf700563538d17bbebbcd5a3db2" @@ -12994,6 +13036,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-stream@^6.0.0: version "6.0.1" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" @@ -14045,6 +14094,14 @@ https-browserify@^1.0.0: resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= +https-proxy-agent@5.0.1, https-proxy-agent@^5.0.0, https-proxy-agent@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" + integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== + dependencies: + agent-base "6" + debug "4" + https-proxy-agent@^2.2.1: version "2.2.4" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz#4ee7a737abd92678a293d9b34a1af4d0d08c787b" @@ -14053,14 +14110,6 @@ https-proxy-agent@^2.2.1: agent-base "^4.3.0" debug "^3.1.0" -https-proxy-agent@^5.0.0, https-proxy-agent@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" - integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== - dependencies: - agent-base "6" - debug "4" - https-proxy-agent@^6.0.0: version "6.2.1" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-6.2.1.tgz#0965ab47371b3e531cf6794d1eb148710a992ba7" @@ -17724,6 +17773,11 @@ mixin-object@^2.0.1: for-in "^0.1.3" is-extendable "^0.1.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-infer-owner@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/mkdirp-infer-owner/-/mkdirp-infer-owner-2.0.0.tgz#55d3b368e7d89065c38f32fd38e638f0ab61d316" @@ -19357,6 +19411,11 @@ pegjs@^0.10.0: resolved "https://registry.yarnpkg.com/pegjs/-/pegjs-0.10.0.tgz#cf8bafae6eddff4b5a7efb185269eaaf4610ddbd" integrity sha1-z4uvrm7d/0tafvsYUmnqr0YQ3b0= +pend@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" + integrity sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg== + performance-now@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" @@ -20273,7 +20332,7 @@ progress@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.0.tgz#8a1be366bf8fc23db2bd23f10c6fe920b4389d1f" -progress@^2.0.0: +progress@2.0.3, progress@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== @@ -20396,7 +20455,7 @@ proxy-addr@~2.0.7: forwarded "0.2.0" ipaddr.js "1.9.1" -proxy-from-env@^1.0.0, proxy-from-env@^1.1.0: +proxy-from-env@1.1.0, proxy-from-env@^1.0.0, proxy-from-env@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== @@ -20489,6 +20548,32 @@ punycode@^1.2.4, punycode@^1.3.2: resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= +puppeteer-core@18.2.1: + version "18.2.1" + resolved "https://registry.yarnpkg.com/puppeteer-core/-/puppeteer-core-18.2.1.tgz#9b7827bb2bf478bb615e2c21425e4659555dc1fe" + integrity sha512-MRtTAZfQTluz3U2oU/X2VqVWPcR1+94nbA2V6ZrSZRVEwLqZ8eclZ551qGFQD/vD2PYqHJwWOW/fpC721uznVw== + dependencies: + cross-fetch "3.1.5" + debug "4.3.4" + devtools-protocol "0.0.1045489" + extract-zip "2.0.1" + https-proxy-agent "5.0.1" + proxy-from-env "1.1.0" + rimraf "3.0.2" + tar-fs "2.1.1" + unbzip2-stream "1.4.3" + ws "8.9.0" + +puppeteer@^18.1.0: + version "18.2.1" + resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-18.2.1.tgz#08967cd423efe511ee4c6e3a5c882ffaf2e6bbf3" + integrity sha512-7+UhmYa7wxPh2oMRwA++k8UGVDxh3YdWFB52r9C3tM81T6BU7cuusUSxImz0GEYSOYUKk/YzIhkQ6+vc0gHbxQ== + dependencies: + https-proxy-agent "5.0.1" + progress "2.0.3" + proxy-from-env "1.1.0" + puppeteer-core "18.2.1" + pure-rand@^6.0.0: version "6.0.4" resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-6.0.4.tgz#50b737f6a925468679bff00ad20eade53f37d5c7" @@ -22127,7 +22212,7 @@ rimraf@2.x.x, rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf dependencies: glob "^7.1.3" -rimraf@^3.0.0, rimraf@^3.0.2: +rimraf@3.0.2, rimraf@^3.0.0, rimraf@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== @@ -23942,7 +24027,17 @@ tapable@^1.0.0, tapable@^1.1.3: resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== -tar-stream@^2.2.0, tar-stream@~2.2.0: +tar-fs@2.1.1: + 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, tar-stream@^2.2.0, tar-stream@~2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== @@ -24754,6 +24849,14 @@ unbox-primitive@^1.0.2: has-symbols "^1.0.3" which-boxed-primitive "^1.0.2" +unbzip2-stream@1.4.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" + unc-path-regex@^0.1.0, unc-path-regex@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" @@ -26191,6 +26294,11 @@ ws@8.13.0: resolved "https://registry.yarnpkg.com/ws/-/ws-8.13.0.tgz#9a9fb92f93cf41512a0735c8f4dd09b8a1211cd0" integrity sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA== +ws@8.9.0: + version "8.9.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.9.0.tgz#2a994bb67144be1b53fe2d23c53c028adeb7f45e" + integrity sha512-Ja7nszREasGaYUYCI2k4lCKIRTt+y7XuqVoHR44YpI49TtryyqbqvDMn5eqfW7e6HzTukDRIsXqzVHScqRcafg== + ws@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/ws/-/ws-4.1.0.tgz#a979b5d7d4da68bf54efe0408967c324869a7289" @@ -26501,6 +26609,14 @@ yarn@^1.17.3: resolved "https://registry.yarnpkg.com/yarn/-/yarn-1.22.19.tgz#4ba7fc5c6e704fce2066ecbfb0b0d8976fe62447" integrity sha512-/0V5q0WbslqnwP91tirOvldvYISzaqhClxzyUKXYxs07yUILIs5jx/k6CFe8bvKSkds5w+eiOqta39Wk3WxdcQ== +yauzl@^2.10.0: + version "2.10.0" + resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" + integrity sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g== + dependencies: + buffer-crc32 "~0.2.3" + fd-slicer "~1.1.0" + yeast@0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419"