Skip to content

Commit

Permalink
Merge pull request #747 from chromaui/jono/ap-2756-chromatic-telemetr…
Browse files Browse the repository at this point in the history
…y-reports-null-pt-2

Chromatic telemetry was reporting null - Add serverRequire to interpret files
  • Loading branch information
JonathanKolnik committed May 30, 2023
2 parents 6b57f63 + f5139b7 commit f05aa7b
Show file tree
Hide file tree
Showing 3 changed files with 423 additions and 21 deletions.
47 changes: 35 additions & 12 deletions bin-src/lib/getStorybookMetadata.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@ import meow from 'meow';
import { parseArgsStringToArgv } from 'string-argv';
import semver from 'semver';

import path from 'path';
import path, { join } from 'path';
import { readConfig } from '@storybook/csf-tools';
import { readdir } from 'fs/promises';
import { Context } from '../types';
import packageDoesNotExist from '../ui/messages/errors/noViewLayerPackage';
import { viewLayers } from './viewLayers';
Expand Down Expand Up @@ -103,15 +105,21 @@ const findViewlayer = async ({ env, log, options, packageJson }) => {
]);
};

const findAddons = async (ctx, mainConfig) => {
if (mainConfig?.addons) {
const findAddons = async (ctx, mainConfig, v7) => {
const addons = v7
? await Promise.all(
mainConfig.getSafeFieldValue(['addons']).map((addon) => resolvePackageJson(addon))
)
: mainConfig?.addons;

if (addons) {
const allDependencies = {
...ctx.packageJson?.dependencies,
...ctx.packageJson?.devDependencies,
...ctx.packageJson?.peerDependencies,
};
return {
addons: mainConfig.addons.map((addon) => {
addons: addons.map((addon) => {
let name: string;
if (typeof addon === 'string') {
name = addon.replace('/register', '');
Expand Down Expand Up @@ -150,9 +158,12 @@ const findConfigFlags = async ({ options, packageJson }) => {
};
};

export const findBuilder = async (mainConfig) => {
if (mainConfig?.framework?.name) {
const sbV7BuilderName = mainConfig.framework.name;
export const findBuilder = async (mainConfig, v7) => {
const framework = v7 ? mainConfig.getSafeFieldValue(['framework']) : mainConfig?.framework;
const core = v7 ? mainConfig.getSafeFieldValue(['core']) : mainConfig?.core;

if (framework?.name) {
const sbV7BuilderName = framework.name;

return Promise.race([
resolvePackageJson(sbV7BuilderName)
Expand All @@ -163,8 +174,8 @@ export const findBuilder = async (mainConfig) => {
}

let name = 'webpack4'; // default builder in Storybook v6
if (mainConfig?.core?.builder) {
const { builder } = mainConfig.core;
if (core?.builder) {
const { builder } = core;
name = typeof builder === 'string' ? builder : builder.name;
}

Expand All @@ -179,14 +190,26 @@ export const findBuilder = async (mainConfig) => {
export const getStorybookMetadata = async (ctx: Context) => {
const configDir = ctx.options.storybookConfigDir ?? '.storybook';
const r = typeof __non_webpack_require__ !== 'undefined' ? __non_webpack_require__ : require;
const mainConfig = await r(path.resolve(configDir, 'main'));

let mainConfig;
let v7 = false;
try {
mainConfig = await r(path.resolve(configDir, 'main'));
} catch (e) {
const files = await readdir(configDir);
const mainConfigFileName = files.find((file) => file.startsWith('main')) || null;
const mainConfigFilePath = join(configDir, mainConfigFileName);
mainConfig = await readConfig(mainConfigFilePath);
v7 = true;
}

const info = await Promise.allSettled([
findAddons(ctx, mainConfig),
findAddons(ctx, mainConfig, v7),
findConfigFlags(ctx),
findViewlayer(ctx),
findBuilder(mainConfig),
findBuilder(mainConfig, v7),
]);

ctx.log.debug(info);
let metadata = {};
info.forEach((sbItem) => {
Expand Down
3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "chromatic",
"version": "6.17.4",
"version": "6.17.5-canary.0",
"description": "Automate visual testing across browsers. Gather UI feedback. Versioned documentation.",
"keywords": [
"storybook-addon",
Expand Down Expand Up @@ -74,6 +74,7 @@
},
"dependencies": {
"@discoveryjs/json-ext": "^0.5.7",
"@storybook/csf-tools": "^7.0.12",
"@types/webpack-env": "^1.17.0",
"snyk-nodejs-lockfile-parser": "^1.49.0"
},
Expand Down
Loading

0 comments on commit f05aa7b

Please sign in to comment.