mirror of
https://github.com/storybookjs/storybook.git
synced 2025-04-08 11:11:53 +08:00
Add new sandboxes for test build benchmarks
This commit is contained in:
parent
2a0cd913b4
commit
1e75e89a05
@ -341,30 +341,6 @@ jobs:
|
||||
paths:
|
||||
- sandbox/*/bench/*.json
|
||||
- sandbox/*/storybook-static
|
||||
build-test-sandboxes:
|
||||
parameters:
|
||||
parallelism:
|
||||
type: integer
|
||||
executor:
|
||||
class: large
|
||||
name: sb_node_16_browsers
|
||||
parallelism: << parameters.parallelism >>
|
||||
steps:
|
||||
- git-shallow-clone/checkout_advanced:
|
||||
clone_options: '--depth 1 --verbose'
|
||||
- attach_workspace:
|
||||
at: .
|
||||
- run:
|
||||
name: Building Sandboxes
|
||||
command: yarn task --task test-build --template $(yarn get-template --cadence << pipeline.parameters.workflow >> --task build) --no-link --start-from=never --junit
|
||||
- report-workflow-on-failure:
|
||||
template: $(yarn get-template --cadence << pipeline.parameters.workflow >> --task build)
|
||||
- store_test_results:
|
||||
path: test-results
|
||||
- persist_to_workspace:
|
||||
root: .
|
||||
paths:
|
||||
- sandbox/*/bench/test-build.json
|
||||
test-runner-production:
|
||||
parameters:
|
||||
parallelism:
|
||||
@ -526,10 +502,6 @@ workflows:
|
||||
parallelism: 12
|
||||
requires:
|
||||
- build
|
||||
- build-test-sandboxes:
|
||||
parallelism: 12
|
||||
requires:
|
||||
- create-sandboxes
|
||||
- build-sandboxes:
|
||||
parallelism: 12
|
||||
requires:
|
||||
@ -554,7 +526,6 @@ workflows:
|
||||
parallelism: 3
|
||||
requires:
|
||||
- build-sandboxes
|
||||
- build-test-sandboxes
|
||||
# TODO: reenable once we find out the source of flakyness
|
||||
# - test-runner-dev:
|
||||
# requires:
|
||||
@ -587,10 +558,6 @@ workflows:
|
||||
parallelism: 21
|
||||
requires:
|
||||
- build
|
||||
- build-test-sandboxes:
|
||||
parallelism: 21
|
||||
requires:
|
||||
- create-sandboxes
|
||||
- build-sandboxes:
|
||||
parallelism: 21
|
||||
requires:
|
||||
@ -615,7 +582,6 @@ workflows:
|
||||
parallelism: 3
|
||||
requires:
|
||||
- build-sandboxes
|
||||
- build-test-sandboxes
|
||||
# TODO: reenable once we find out the source of flakyness
|
||||
# - test-runner-dev:
|
||||
# parallelism: 4
|
||||
@ -649,10 +615,6 @@ workflows:
|
||||
# - smoke-test-sandboxes: # disabled for now
|
||||
# requires:
|
||||
# - create-sandboxes
|
||||
- build-test-sandboxes:
|
||||
parallelism: 36
|
||||
requires:
|
||||
- create-sandboxes
|
||||
- build-sandboxes:
|
||||
parallelism: 36
|
||||
requires:
|
||||
|
@ -67,6 +67,7 @@ export type Template = {
|
||||
modifications?: {
|
||||
skipTemplateStories?: boolean;
|
||||
mainConfig?: Partial<StorybookConfig>;
|
||||
testBuild?: boolean;
|
||||
disableDocs?: boolean;
|
||||
};
|
||||
/**
|
||||
@ -559,6 +560,28 @@ const benchTemplates = {
|
||||
},
|
||||
skipTasks: ['e2e-tests-dev', 'test-runner', 'test-runner-dev', 'e2e-tests', 'chromatic'],
|
||||
},
|
||||
'bench/react-vite-default-ts/test-build': {
|
||||
...baseTemplates['react-vite/default-ts'],
|
||||
name: 'Bench (react-vite/default-ts, test-build)',
|
||||
inDevelopment: true,
|
||||
isInternal: true,
|
||||
modifications: {
|
||||
skipTemplateStories: true,
|
||||
testBuild: true,
|
||||
},
|
||||
skipTasks: ['e2e-tests-dev', 'test-runner', 'test-runner-dev', 'e2e-tests', 'chromatic'],
|
||||
},
|
||||
'bench/react-webpack-18-ts/test-build': {
|
||||
...baseTemplates['react-webpack/18-ts'],
|
||||
name: 'Bench (react-webpack/18-ts, test-build)',
|
||||
inDevelopment: true,
|
||||
isInternal: true,
|
||||
modifications: {
|
||||
skipTemplateStories: true,
|
||||
testBuild: true,
|
||||
},
|
||||
skipTasks: ['e2e-tests-dev', 'test-runner', 'test-runner-dev', 'e2e-tests', 'chromatic'],
|
||||
},
|
||||
} satisfies Record<`bench/${string}`, Template & { isInternal: true }>;
|
||||
|
||||
export const allTemplates: Record<TemplateKey, Template> = {
|
||||
@ -580,6 +603,8 @@ export const normal: TemplateKey[] = [
|
||||
'bench/react-vite-default-ts',
|
||||
'bench/react-webpack-18-ts',
|
||||
'bench/react-vite-default-ts-nodocs',
|
||||
'bench/react-vite-default-ts/test-build',
|
||||
'bench/react-webpack-18-ts/test-build',
|
||||
];
|
||||
export const merged: TemplateKey[] = [
|
||||
...normal,
|
||||
|
@ -20,7 +20,7 @@ import { sandbox } from './tasks/sandbox';
|
||||
import { syncDocs } from './tasks/sync-docs';
|
||||
import { dev } from './tasks/dev';
|
||||
import { smokeTest } from './tasks/smoke-test';
|
||||
import { build, testBuild } from './tasks/build';
|
||||
import { build } from './tasks/build';
|
||||
import { serve } from './tasks/serve';
|
||||
import { testRunnerBuild } from './tasks/test-runner-build';
|
||||
import { testRunnerDev } from './tasks/test-runner-dev';
|
||||
@ -103,7 +103,6 @@ export const tasks = {
|
||||
dev,
|
||||
'smoke-test': smokeTest,
|
||||
build,
|
||||
'test-build': testBuild,
|
||||
serve,
|
||||
'test-runner': testRunnerBuild,
|
||||
'test-runner-dev': testRunnerDev,
|
||||
|
@ -12,10 +12,14 @@ export const build: Task = {
|
||||
async ready({ builtSandboxDir }) {
|
||||
return pathExists(builtSandboxDir);
|
||||
},
|
||||
async run({ sandboxDir }, { dryRun, debug }) {
|
||||
async run({ sandboxDir, template }, { dryRun, debug }) {
|
||||
const start = now();
|
||||
|
||||
await exec(`yarn build-storybook --quiet`, { cwd: sandboxDir }, { dryRun, debug });
|
||||
await exec(
|
||||
`yarn build-storybook --quiet ${template.modifications?.testBuild ? '--test' : ''}`,
|
||||
{ cwd: sandboxDir },
|
||||
{ dryRun, debug }
|
||||
);
|
||||
|
||||
const buildTime = now() - start;
|
||||
const dir = join(sandboxDir, 'storybook-static');
|
||||
@ -48,49 +52,3 @@ export const build: Task = {
|
||||
);
|
||||
},
|
||||
};
|
||||
|
||||
export const testBuild: Task = {
|
||||
description: 'Build the static version of the sandbox optimized for testing purposes',
|
||||
dependsOn: ['sandbox'],
|
||||
async ready({ builtSandboxDir }) {
|
||||
return pathExists(builtSandboxDir);
|
||||
},
|
||||
async run({ sandboxDir }, { dryRun, debug }) {
|
||||
const start = now();
|
||||
|
||||
await exec(`yarn build-storybook --test --quiet`, { cwd: sandboxDir }, { dryRun, debug });
|
||||
|
||||
const testBuildTime = now() - start;
|
||||
const dir = join(sandboxDir, 'storybook-static');
|
||||
const getSize = promisify(dirSize);
|
||||
const testBuildSize = await getSize(dir);
|
||||
const testBuildSbAddonsSize = await getSize(join(dir, 'sb-addons'));
|
||||
const testBuildSbCommonSize = await getSize(join(dir, 'sb-common-assets'));
|
||||
const testBuildSbManagerSize = await getSize(join(dir, 'sb-manager'));
|
||||
const testBuildSbPreviewSize = await getSize(join(dir, 'sb-preview'));
|
||||
const testBuildPrebuildSize =
|
||||
testBuildSbAddonsSize +
|
||||
testBuildSbCommonSize +
|
||||
testBuildSbManagerSize +
|
||||
testBuildSbPreviewSize;
|
||||
|
||||
const testBuildStaticSize = await getSize(join(dir, 'static')).catch(() => 0);
|
||||
const testBuildPreviewSize = testBuildSize - testBuildPrebuildSize - testBuildStaticSize;
|
||||
|
||||
await saveBench(
|
||||
'test-build',
|
||||
{
|
||||
testBuildTime,
|
||||
testBuildSize,
|
||||
testBuildSbAddonsSize,
|
||||
testBuildSbCommonSize,
|
||||
testBuildSbManagerSize,
|
||||
testBuildSbPreviewSize,
|
||||
testBuildStaticSize,
|
||||
testBuildPrebuildSize,
|
||||
testBuildPreviewSize,
|
||||
},
|
||||
{ rootDir: sandboxDir }
|
||||
);
|
||||
},
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user