From efae09363d97b15995c0a53cadc21547178e7ce7 Mon Sep 17 00:00:00 2001 From: Nick Partridge Date: Thu, 22 Apr 2021 12:35:55 -0500 Subject: [PATCH] ci: fix flaky loading on visual test runner (#1130) --- .eslintignore | 3 -- .eslintrc.js | 2 +- .storybook-docs/tsconfig.json | 28 ---------- .storybook/tsconfig.json | 5 -- global.d.ts | 40 ++++++++++++++ integration/helpers.ts | 1 - integration/page_objects/common.ts | 7 --- ...-actions-visually-looks-correct-1-snap.png | Bin 0 -> 34382 bytes ...der-color-picker-on-mouse-click-1-snap.png | Bin 36420 -> 36064 bytes integration/tests/all.test.ts | 6 +-- integration/tests/area_stories.test.ts | 2 - integration/tests/legend_stories.test.ts | 4 -- integration/tests/test_cases_stories.test.ts | 1 - package.json | 10 ++-- {.playground => playground}/index.html | 0 {.playground => playground}/index.tsx | 0 {.playground => playground}/playground.tsx | 0 {.playground => playground}/tsconfig.json | 0 {.playground => playground}/webpack.config.js | 0 src/mocks/utils.ts | 13 +++-- stories/interactions/14_crosshair_time.tsx | 2 +- stories/legend/13_inside_chart.tsx | 2 +- stories/mixed/6_fitting_stacked.tsx | 6 +-- stories/stylings/22_dark_theme.tsx | 2 +- stories/stylings/4_theme_styling.tsx | 2 +- {.storybook-docs => storybook-docs}/addons.ts | 0 {.storybook-docs => storybook-docs}/config.ts | 0 .../preview-head.html | 0 .../style.scss | 0 .../theme_service.ts | 0 storybook-docs/tsconfig.json | 5 ++ .../webpack.config.js | 4 +- {.storybook => storybook}/addons.ts | 0 {.storybook => storybook}/config.ts | 6 +++ storybook/preload_icons.ts | 49 ++++++++++++++++++ {.storybook => storybook}/preview-head.html | 0 {.storybook => storybook}/style.scss | 30 +++++++---- {.storybook => storybook}/theme_service.ts | 0 storybook/tsconfig.json | 5 ++ {.storybook => storybook}/webpack.config.js | 2 +- tsconfig.json | 7 +-- tsconfig.lib-check.json | 1 + tsconfig.lib-nocomments.json | 1 + tsconfig.lib.json | 1 + tsconfig.lint.json | 2 +- 45 files changed, 160 insertions(+), 89 deletions(-) delete mode 100644 .storybook-docs/tsconfig.json delete mode 100644 .storybook/tsconfig.json create mode 100644 integration/tests/__image_snapshots__/all-test-ts-baseline-visual-tests-for-all-stories-legend-actions-visually-looks-correct-1-snap.png rename {.playground => playground}/index.html (100%) rename {.playground => playground}/index.tsx (100%) rename {.playground => playground}/playground.tsx (100%) rename {.playground => playground}/tsconfig.json (100%) rename {.playground => playground}/webpack.config.js (100%) rename {.storybook-docs => storybook-docs}/addons.ts (100%) rename {.storybook-docs => storybook-docs}/config.ts (100%) rename {.storybook-docs => storybook-docs}/preview-head.html (100%) rename {.storybook-docs => storybook-docs}/style.scss (100%) rename {.storybook-docs => storybook-docs}/theme_service.ts (100%) create mode 100644 storybook-docs/tsconfig.json rename {.storybook-docs => storybook-docs}/webpack.config.js (94%) rename {.storybook => storybook}/addons.ts (100%) rename {.storybook => storybook}/config.ts (90%) create mode 100644 storybook/preload_icons.ts rename {.storybook => storybook}/preview-head.html (100%) rename {.storybook => storybook}/style.scss (64%) rename {.storybook => storybook}/theme_service.ts (100%) create mode 100644 storybook/tsconfig.json rename {.storybook => storybook}/webpack.config.js (97%) diff --git a/.eslintignore b/.eslintignore index 98f4449052..13ca9d8266 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1,7 +1,4 @@ # Force include -!.storybook -!.storybook-docs -!.playground !.*.js # Ignore diff --git a/.eslintrc.js b/.eslintrc.js index b1b552b3f2..b465a0cce9 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -423,7 +423,7 @@ module.exports = { }, }, { - files: ['.playground/**/*.ts?(x)'], + files: ['playground/**/*.ts?(x)'], rules: { 'react/prefer-stateless-function': 0, }, diff --git a/.storybook-docs/tsconfig.json b/.storybook-docs/tsconfig.json deleted file mode 100644 index 19e4ef33e9..0000000000 --- a/.storybook-docs/tsconfig.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - // "compilerOptions": { - // "outDir": "build/lib", - // "module": "commonjs", - // "target": "es5", - // "lib": ["es5", "es6", "es7", "es2017", "dom"], - // "sourceMap": true, - // "allowJs": false, - // "jsx": "react", - // "moduleResolution": "node", - // "rootDirs": ["src", "docs"], - // "baseUrl": "src", - // "forceConsistentCasingInFileNames": true, - // "noImplicitReturns": true, - // "noImplicitThis": true, - // "noImplicitAny": true, - // "strictNullChecks": true, - // "suppressImplicitAnyIndexErrors": true, - // "noUnusedLocals": true, - // "declaration": true, - // "allowSyntheticDefaultImports": true, - // "experimentalDecorators": true, - // "emitDecoratorMetadata": true - // }, - "extends": "../tsconfig", - "include": ["../src/**/*", "../stories/**/*", "./**/*", "../.storybook-docs/config.ts"], - "exclude": ["../**/*.test.*"] -} diff --git a/.storybook/tsconfig.json b/.storybook/tsconfig.json deleted file mode 100644 index d1c81f1004..0000000000 --- a/.storybook/tsconfig.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "extends": "../tsconfig", - "include": ["../src/**/*", "../stories/**/*", "./**/*", "../.storybook-docs/config.docs.ts"], - "exclude": ["../**/*.test.*"] -} diff --git a/global.d.ts b/global.d.ts index d41127d0e7..4a3ea50387 100644 --- a/global.d.ts +++ b/global.d.ts @@ -18,3 +18,43 @@ */ import 'jest-extended'; // https://github.com/jest-community/jest-extended + +declare global { + namespace NodeJS { + interface ProcessEnv { + /** + * Node enviroment + */ + NODE_ENV: 'development' | 'production' | 'test'; + /** + * Port used for dev servers including: + * - storybook + * - playground + */ + PORT?: string; + /** + * Timezone flag used on jest.ts.config.js + */ + TZ: string; + /** + * Flag used to enable a more suitable version of storybook for visual regression tests. + * + * Including: + * - disabling animations + * - preloading icons + */ + STORYBOOK_VRT: string; + /** + * Flag used to enable debug state on visual regression test runnner + */ + DEBUG: string; + /** + * String used for seeding a random number generator used in storybook and test files + * + * When seeded all rng use a deterministic random set of numbers. + * When no see is provided a truely _random_ number set will be used. + */ + RNG_SEED: string; + } + } +} diff --git a/integration/helpers.ts b/integration/helpers.ts index 73e3fc44f2..059cff7701 100644 --- a/integration/helpers.ts +++ b/integration/helpers.ts @@ -73,7 +73,6 @@ function encodeString(string: string) { */ const storiesToSkip: Record = { // Interactions: ['Some story name'], - Legend: ['Actions'], 'Test Cases': ['No Series'], }; diff --git a/integration/page_objects/common.ts b/integration/page_objects/common.ts index 8db68687b7..f90335b86a 100644 --- a/integration/page_objects/common.ts +++ b/integration/page_objects/common.ts @@ -388,7 +388,6 @@ class CommonPage { options?: Omit, ) { const action = async () => { - await this.disableAnimations(); // click to focus within the chart await this.clickMouseRelativeToDOMElement({ top: 0, left: 0 }, this.chartSelector); // eslint-disable-next-line no-restricted-syntax @@ -446,12 +445,6 @@ class CommonPage { }); } - async disableAnimations() { - await page.evaluate(() => { - document.querySelector('#story-root')!.classList.add('disable-animations'); - }); - } - /** * Wait for an element to be on the DOM * diff --git a/integration/tests/__image_snapshots__/all-test-ts-baseline-visual-tests-for-all-stories-legend-actions-visually-looks-correct-1-snap.png b/integration/tests/__image_snapshots__/all-test-ts-baseline-visual-tests-for-all-stories-legend-actions-visually-looks-correct-1-snap.png new file mode 100644 index 0000000000000000000000000000000000000000..c8361832fa631854e6142c2815fee6891420a23d GIT binary patch literal 34382 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

9Xbs^-9AOXBKr_iJ>AOe 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

gmR2D91}ox21&w8<*PNevk6cYY3!z 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 K;G`Zr`#%7YW?&`& literal 36420 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 kR~1%ZN4)i)N04pOcDZJ3mY9YtBCD%>O ({ +jest.mock('../../storybook/theme_service.ts', () => ({ switchTheme: () => undefined, })); @@ -29,10 +29,10 @@ const storyGroups = getStorybookInfo(); describe('Baseline Visual tests for all stories', () => { describe.each(storyGroups)('%s', (_group, encodedGroup, stories) => { - describe.each(stories)('%s', (_title, encodedTitle, delay) => { + describe.each(stories)('%s', (_title, encodedTitle) => { it('visually looks correct', async () => { const url = `http://localhost:9001?id=${encodedGroup}--${encodedTitle}`; - await common.expectChartAtUrlToMatchScreenshot(url, { delay }); + await common.expectChartAtUrlToMatchScreenshot(url); }); }); }); diff --git a/integration/tests/area_stories.test.ts b/integration/tests/area_stories.test.ts index 66a9eada27..1f3492b532 100644 --- a/integration/tests/area_stories.test.ts +++ b/integration/tests/area_stories.test.ts @@ -89,7 +89,6 @@ describe('Area series stories', () => { it('shows only positive values when hiding negative one', async () => { const action = async () => { - await common.disableAnimations(); await page.click('.echLegendItem:nth-child(2) .echLegendItem__label'); }; await common.expectChartAtUrlToMatchScreenshot( @@ -100,7 +99,6 @@ describe('Area series stories', () => { it('shows only negative values when hiding positive one', async () => { const action = async () => { - await common.disableAnimations(); await page.click('.echLegendItem:nth-child(1) .echLegendItem__label'); }; await common.expectChartAtUrlToMatchScreenshot( diff --git a/integration/tests/legend_stories.test.ts b/integration/tests/legend_stories.test.ts index b0afea39ad..4e22ed8fdc 100644 --- a/integration/tests/legend_stories.test.ts +++ b/integration/tests/legend_stories.test.ts @@ -49,7 +49,6 @@ describe('Legend stories', () => { it('should render color picker on mouse click', async () => { const action = async () => { - await common.disableAnimations(); await common.clickMouseRelativeToDOMElement({ left: 0, top: 0 }, '.echLegendItem__color'); }; await common.expectElementAtUrlToMatchScreenshot( @@ -58,19 +57,16 @@ describe('Legend stories', () => { { action, waitSelector: common.chartWaitSelector, - delay: 500, // needed for popover animation to complete }, ); }); it('should render legend action on mouse hover', async () => { const action = async () => { - await common.disableAnimations(); await common.moveMouseRelativeToDOMElement({ left: 30, top: 10 }, '.echLegendItem'); }; await common.expectChartAtUrlToMatchScreenshot('http://localhost:9001/?path=/story/legend--actions', { action, - delay: 500, // needed for icon to load }); }); diff --git a/integration/tests/test_cases_stories.test.ts b/integration/tests/test_cases_stories.test.ts index f2123c4897..a84abb2d02 100644 --- a/integration/tests/test_cases_stories.test.ts +++ b/integration/tests/test_cases_stories.test.ts @@ -25,7 +25,6 @@ describe('Test cases stories', () => { 'http://localhost:9001/?path=/story/test-cases--no-series&knob-Show custom no results=true', { waitSelector: '.echReactiveChart_noResults .euiIcon:not(.euiIcon-isLoading)', - delay: 500, // wait for icon to load }, ); }); diff --git a/package.json b/package.json index edf24a8521..492e283da4 100644 --- a/package.json +++ b/package.json @@ -33,14 +33,14 @@ "lint": "NODE_ENV=production eslint --quiet --ext .tsx,.ts,.js .", "lint:fix": "yarn lint --fix", "prettier:check": "prettier --check \"**/*.{json,html,css,scss}\"", - "playground": "cd .playground && webpack-dev-server", - "playground:ie": "cd .playground && webpack-dev-server --host=0.0.0.0 --disable-host-check --useLocalIp", + "playground": "cd playground && webpack-dev-server", + "playground:ie": "cd playground && webpack-dev-server --host=0.0.0.0 --disable-host-check --useLocalIp", "pq": "pretty-quick", "semantic-release": "semantic-release", "start": "yarn storybook", - "start-docs": "start-storybook -p 8001 -c .storybook-docs --ci", - "storybook": "RNG_SEED='elastic-charts' start-storybook -s ./public -p 9001 -c .storybook --ci --no-version-updates", - "storybook:build": "rm -rf .out && build-storybook -s ./public -c .storybook -o .out", + "start-docs": "start-storybook -p 8001 -c storybook-docs --ci", + "storybook": "STORYBOOK_VRT='true' start-storybook -s ./public -p 9001 -c storybook --ci --no-version-updates", + "storybook:build": "rm -rf .out && build-storybook -s ./public -c storybook -o .out", "test": "jest --verbose --config jest.config.js", "test:tz": "yarn test:tz-utc && yarn test:tz-ny && yarn test:tz-jp", "test:tz-utc": "TZ=UTC jest --verbose --config=jest.tz.config.js", diff --git a/.playground/index.html b/playground/index.html similarity index 100% rename from .playground/index.html rename to playground/index.html diff --git a/.playground/index.tsx b/playground/index.tsx similarity index 100% rename from .playground/index.tsx rename to playground/index.tsx diff --git a/.playground/playground.tsx b/playground/playground.tsx similarity index 100% rename from .playground/playground.tsx rename to playground/playground.tsx diff --git a/.playground/tsconfig.json b/playground/tsconfig.json similarity index 100% rename from .playground/tsconfig.json rename to playground/tsconfig.json diff --git a/.playground/webpack.config.js b/playground/webpack.config.js similarity index 100% rename from .playground/webpack.config.js rename to playground/webpack.config.js diff --git a/src/mocks/utils.ts b/src/mocks/utils.ts index a9892041b6..88c7c1b8c5 100644 --- a/src/mocks/utils.ts +++ b/src/mocks/utils.ts @@ -32,12 +32,19 @@ import { DataGenerator, RandomNumberGenerator } from '../utils/data_generators/d export const forcedType = >(obj: Partial): T => obj as T; /** - * Return rng function with optional `min`, `max` and `fractionDigits` params + * Returns rng seed from `process.env` + * @internal + */ +export const getRNGSeed = (fallback?: string): string | undefined => + process.env.RNG_SEED ?? (process.env.STORYBOOK_VRT ? 'elastic-charts' : fallback); + +/** + * Returns rng function with optional `min`, `max` and `fractionDigits` params * - * @param string process.env.RNG_SEED + * @param string seed for deterministic algorithm * @internal */ -export const getRandomNumberGenerator = (seed = process.env.RNG_SEED): RandomNumberGenerator => { +export const getRandomNumberGenerator = (seed = getRNGSeed()): RandomNumberGenerator => { const rng = seedrandom(seed); /** diff --git a/stories/interactions/14_crosshair_time.tsx b/stories/interactions/14_crosshair_time.tsx index 77ad86b7f2..6665df15e7 100644 --- a/stories/interactions/14_crosshair_time.tsx +++ b/stories/interactions/14_crosshair_time.tsx @@ -20,7 +20,6 @@ import { boolean, select } from '@storybook/addon-knobs'; import React from 'react'; -import { switchTheme } from '../../.storybook/theme_service'; import { Axis, BarSeries, @@ -36,6 +35,7 @@ import { TooltipType, } from '../../src'; import { KIBANA_METRICS } from '../../src/utils/data_samples/test_dataset_kibana'; +import { switchTheme } from '../../storybook/theme_service'; import { getChartRotationKnob } from '../utils/knobs'; import { SB_KNOBS_PANEL } from '../utils/storybook'; diff --git a/stories/legend/13_inside_chart.tsx b/stories/legend/13_inside_chart.tsx index 1f21dd9c58..52c3d5ea3b 100644 --- a/stories/legend/13_inside_chart.tsx +++ b/stories/legend/13_inside_chart.tsx @@ -20,7 +20,6 @@ import { select, boolean, number } from '@storybook/addon-knobs'; import React from 'react'; -import { switchTheme } from '../../.storybook/theme_service'; import { AreaSeries, Axis, @@ -37,6 +36,7 @@ import { } from '../../src'; import { SeededDataGenerator } from '../../src/mocks/utils'; import { KIBANA_METRICS } from '../../src/utils/data_samples/test_dataset_kibana'; +import { switchTheme } from '../../storybook/theme_service'; import { SB_KNOBS_PANEL } from '../utils/storybook'; const dg = new SeededDataGenerator(); diff --git a/stories/mixed/6_fitting_stacked.tsx b/stories/mixed/6_fitting_stacked.tsx index e18f2f9ba7..123082ddc8 100644 --- a/stories/mixed/6_fitting_stacked.tsx +++ b/stories/mixed/6_fitting_stacked.tsx @@ -22,11 +22,11 @@ import numeral from 'numeral'; import React from 'react'; import { AreaSeries, Axis, Chart, CurveType, Position, ScaleType, Settings, Fit, StackMode } from '../../src'; -import { getRandomNumberGenerator } from '../../src/mocks/utils'; +import { getRandomNumberGenerator, getRNGSeed } from '../../src/mocks/utils'; import { SB_KNOBS_PANEL } from '../utils/storybook'; export const Example = () => { - const randomizeBoundingData = process.env.RNG_SEED !== null ? false : boolean('randomize bounding data', false); + const randomizeBoundingData = getRNGSeed() ? false : boolean('randomize bounding data', false); const dataTypes: Record> = { isolated: [ { x: 0, y: 3 }, @@ -159,7 +159,7 @@ export const Example = () => { const parsedEndValue: number | 'nearest' = Number.isNaN(Number(endValue)) ? 'nearest' : Number(endValue); const value = number('Explicit value (using Fit.Explicit)', 5); const xScaleType = dataKey === 'ordinal' ? ScaleType.Ordinal : ScaleType.Linear; - const rngSeed = randomizeBoundingData ? undefined : process.env.RNG_SEED ?? '__seed__'; + const rngSeed = randomizeBoundingData ? undefined : getRNGSeed('__seed__'); const rng = getRandomNumberGenerator(rngSeed); const tickFormat = stackMode === 'percentage' ? (d: any) => numeral(d).format('0[.]00%') : undefined; return ( diff --git a/stories/stylings/22_dark_theme.tsx b/stories/stylings/22_dark_theme.tsx index 30c8f22564..58184922d7 100644 --- a/stories/stylings/22_dark_theme.tsx +++ b/stories/stylings/22_dark_theme.tsx @@ -20,7 +20,6 @@ import { boolean } from '@storybook/addon-knobs'; import React from 'react'; -import { switchTheme } from '../../.storybook/theme_service'; import { AreaSeries, Axis, @@ -36,6 +35,7 @@ import { TooltipType, } from '../../src'; import { SeededDataGenerator } from '../../src/mocks/utils'; +import { switchTheme } from '../../storybook/theme_service'; const dg = new SeededDataGenerator(); const data1 = dg.generateGroupedSeries(40, 4); diff --git a/stories/stylings/4_theme_styling.tsx b/stories/stylings/4_theme_styling.tsx index 494bc1755c..2f41de45a6 100644 --- a/stories/stylings/4_theme_styling.tsx +++ b/stories/stylings/4_theme_styling.tsx @@ -20,7 +20,6 @@ import { boolean, color, number, select } from '@storybook/addon-knobs'; import React from 'react'; -import { switchTheme } from '../../.storybook/theme_service'; import { AreaSeries, Axis, @@ -38,6 +37,7 @@ import { } from '../../src'; import { SeededDataGenerator } from '../../src/mocks/utils'; import { palettes } from '../../src/utils/themes/colors'; +import { switchTheme } from '../../storybook/theme_service'; function range(title: string, min: number, max: number, value: number, groupId?: string, step = 1) { return number( diff --git a/.storybook-docs/addons.ts b/storybook-docs/addons.ts similarity index 100% rename from .storybook-docs/addons.ts rename to storybook-docs/addons.ts diff --git a/.storybook-docs/config.ts b/storybook-docs/config.ts similarity index 100% rename from .storybook-docs/config.ts rename to storybook-docs/config.ts diff --git a/.storybook-docs/preview-head.html b/storybook-docs/preview-head.html similarity index 100% rename from .storybook-docs/preview-head.html rename to storybook-docs/preview-head.html diff --git a/.storybook-docs/style.scss b/storybook-docs/style.scss similarity index 100% rename from .storybook-docs/style.scss rename to storybook-docs/style.scss diff --git a/.storybook-docs/theme_service.ts b/storybook-docs/theme_service.ts similarity index 100% rename from .storybook-docs/theme_service.ts rename to storybook-docs/theme_service.ts diff --git a/storybook-docs/tsconfig.json b/storybook-docs/tsconfig.json new file mode 100644 index 0000000000..d165383705 --- /dev/null +++ b/storybook-docs/tsconfig.json @@ -0,0 +1,5 @@ +{ + "extends": "../tsconfig", + "include": ["../src/**/*", "../stories/**/*", "./**/*", "config.ts"], + "exclude": ["../**/*.test.*"] +} diff --git a/.storybook-docs/webpack.config.js b/storybook-docs/webpack.config.js similarity index 94% rename from .storybook-docs/webpack.config.js rename to storybook-docs/webpack.config.js index 353dd2e190..84676457ab 100644 --- a/.storybook-docs/webpack.config.js +++ b/storybook-docs/webpack.config.js @@ -37,8 +37,6 @@ const scssLoaders = [ ]; module.exports = async ({ config }) => { - // config.plugins.push(new webpack.EnvironmentPlugin({ RNG_SEED: null })); - // Replace default css rules with nonce config.module.rules = config.module.rules.filter(({ test }) => !test.test('.css')); config.module.rules.push({ @@ -61,7 +59,7 @@ module.exports = async ({ config }) => { config.module.rules.push({ test: /\.scss$/, - include: [path.resolve(__dirname, '../.storybook'), path.resolve(__dirname, '../node_modules/@elastic')], + include: [path.resolve(__dirname, '../storybook'), path.resolve(__dirname, '../node_modules/@elastic')], use: [ { loader: 'style-loader', diff --git a/.storybook/addons.ts b/storybook/addons.ts similarity index 100% rename from .storybook/addons.ts rename to storybook/addons.ts diff --git a/.storybook/config.ts b/storybook/config.ts similarity index 90% rename from .storybook/config.ts rename to storybook/config.ts index 6ebf39a7c5..feb51113e8 100644 --- a/.storybook/config.ts +++ b/storybook/config.ts @@ -22,11 +22,17 @@ import { withKnobs } from '@storybook/addon-knobs'; import { addDecorator, configure, addParameters } from '@storybook/react'; import { create } from '@storybook/theming'; +import { preloadIcons } from './preload_icons'; import { switchTheme } from './theme_service'; import './style.scss'; switchTheme('light'); +if (process.env.STORYBOOK_VRT) { + preloadIcons(); + document.querySelector('html')?.classList.add('disable-animations'); +} + addParameters({ options: { theme: create({ diff --git a/storybook/preload_icons.ts b/storybook/preload_icons.ts new file mode 100644 index 0000000000..add678be47 --- /dev/null +++ b/storybook/preload_icons.ts @@ -0,0 +1,49 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +// @ts-ignore +import { appendIconComponentCache } from '../node_modules/@elastic/eui/es/components/icon/icon'; + +/** + * Loads nessecery icons to prevent loading vrt diff + * + * https://github.com/elastic/eui/blob/b2ffddee61913202224f2967599436ca95265879/src-docs/src/views/guidelines/getting_started.md#failing-icon-imports + */ +export const preloadIcons = () => { + /* eslint-disable global-require, @typescript-eslint/no-var-requires */ + + /* + * See icon file name/path map + * https://github.com/elastic/eui/blob/b2ffddee61913202224f2967599436ca95265879/src/components/icon/icon.tsx#L39 + */ + appendIconComponentCache({ + arrowUp: require('@elastic/eui/es/components/icon/assets/arrow_up').icon, + arrowLeft: require('@elastic/eui/es/components/icon/assets/arrow_left').icon, + arrowDown: require('@elastic/eui/es/components/icon/assets/arrow_down').icon, + arrowRight: require('@elastic/eui/es/components/icon/assets/arrow_right').icon, + iInCircle: require('@elastic/eui/es/components/icon/assets/iInCircle').icon, + tokenKey: require('@elastic/eui/es/components/icon/assets/tokens/tokenKey').icon, + filter: require('@elastic/eui/es/components/icon/assets/filter').icon, + starFilled: require('@elastic/eui/es/components/icon/assets/star_filled').icon, + pencil: require('@elastic/eui/es/components/icon/assets/pencil').icon, + visualizeApp: require('@elastic/eui/es/components/icon/assets/app_visualize').icon, + }); + + /* eslint-enable global-require, @typescript-eslint/no-var-requires */ +}; diff --git a/.storybook/preview-head.html b/storybook/preview-head.html similarity index 100% rename from .storybook/preview-head.html rename to storybook/preview-head.html diff --git a/.storybook/style.scss b/storybook/style.scss similarity index 64% rename from .storybook/style.scss rename to storybook/style.scss index 7e0bf21bca..cbfdf5ecfc 100644 --- a/.storybook/style.scss +++ b/storybook/style.scss @@ -31,18 +31,26 @@ html { z-index: 500; box-sizing: border-box; background-color: blanchedalmond; +} + +html.disable-animations { + *, + *::after, + *::before { + transition-delay: 0s !important; + transition-duration: 0s !important; + animation-delay: -0.0001s !important; + animation-duration: 0s !important; + animation-play-state: paused !important; + caret-color: transparent !important; + } + + .echLegend .echLegendListContainer :focus { + animation-duration: 0s !important; // remove focus animation but keep border + } - &.disable-animations { - *, - *::after, - *::before { - transition-delay: 0s !important; - transition-duration: 0s !important; - animation-delay: -0.0001s !important; - animation-duration: 0s !important; - animation-play-state: paused !important; - caret-color: transparent !important; - } + .euiSaturation:focus .euiSaturation__indicator { + animation: none !important; // fix color picker dot } } diff --git a/.storybook/theme_service.ts b/storybook/theme_service.ts similarity index 100% rename from .storybook/theme_service.ts rename to storybook/theme_service.ts diff --git a/storybook/tsconfig.json b/storybook/tsconfig.json new file mode 100644 index 0000000000..c1d5890418 --- /dev/null +++ b/storybook/tsconfig.json @@ -0,0 +1,5 @@ +{ + "extends": "../tsconfig", + "include": ["../src/**/*", "../stories/**/*", "./**/*", "../storybook-docs/config.docs.ts"], + "exclude": ["../**/*.test.*"] +} diff --git a/.storybook/webpack.config.js b/storybook/webpack.config.js similarity index 97% rename from .storybook/webpack.config.js rename to storybook/webpack.config.js index 024719f3fe..be92df8e1c 100644 --- a/.storybook/webpack.config.js +++ b/storybook/webpack.config.js @@ -108,7 +108,7 @@ module.exports = async ({ config }) => { config.module.rules.push({ test: /\.scss$/, - include: [path.resolve(__dirname, '../.storybook'), path.resolve(__dirname, '../node_modules/@elastic')], + include: [path.resolve(__dirname, '../storybook'), path.resolve(__dirname, '../node_modules/@elastic')], use: [ { loader: 'style-loader', diff --git a/tsconfig.json b/tsconfig.json index 5daff1d1f2..82aa8fa155 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -17,8 +17,9 @@ "allowJs": false, "skipLibCheck": true, "downlevelIteration": true, - "typeRoots": ["./node_modules/@types/", "./global.d.ts"], "stripInternal": true, - "resolveJsonModule": true - } + "resolveJsonModule": true, + "typeRoots": ["./node_modules/@types", "./global.d.ts"] + }, + "files": ["./global.d.ts", "./scripts/custom_matchers.ts"] } diff --git a/tsconfig.lib-check.json b/tsconfig.lib-check.json index 75d4a3ecd5..2a9f6bd4e4 100644 --- a/tsconfig.lib-check.json +++ b/tsconfig.lib-check.json @@ -7,5 +7,6 @@ "skipLibCheck": false, "rootDir": "dist" }, + "files": [], "include": ["dist"] } diff --git a/tsconfig.lib-nocomments.json b/tsconfig.lib-nocomments.json index 220f6c9ad2..f2480c7c3c 100644 --- a/tsconfig.lib-nocomments.json +++ b/tsconfig.lib-nocomments.json @@ -4,5 +4,6 @@ "declaration": false, "declarationMap": false }, + "files": [], "extends": "./tsconfig.lib" } diff --git a/tsconfig.lib.json b/tsconfig.lib.json index 1b7c6ac707..87e0d270bf 100644 --- a/tsconfig.lib.json +++ b/tsconfig.lib.json @@ -4,6 +4,7 @@ "removeComments": false }, "extends": "./tsconfig", + "files": [], "include": ["src/**/*"], "exclude": ["**/*.test.*", "**/__mocks__", "src/mocks/**/*", "src/utils/data_samples/**/*"] } diff --git a/tsconfig.lint.json b/tsconfig.lint.json index 14ae921ce5..92b72f3718 100644 --- a/tsconfig.lint.json +++ b/tsconfig.lint.json @@ -3,5 +3,5 @@ "compilerOptions": { "allowJs": true }, - "include": ["./**/*", "./.*.js", "./.playground/**/*", "./.storybook/**/*", "./.storybook-docs/**/*"] + "include": ["./**/*", "./.*.js"] }