• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

electron / fiddle / 16349153970

17 Jul 2025 03:21PM UTC coverage: 80.235% (-7.8%) from 87.992%
16349153970

push

github

web-flow
test: switch to Vitest (#1718)

* test: switch to Vitest

* chore: update code comment

Co-authored-by: Kevin Cui <158blackhole@gmail.com>

* test: make use of vi.useFakeTimers to improve test

---------

Co-authored-by: Kevin Cui <158blackhole@gmail.com>

1520 of 1645 branches covered (92.4%)

Branch coverage included in aggregate %.

15 of 16 new or added lines in 12 files covered. (93.75%)

504 existing lines in 45 files now uncovered.

8807 of 11226 relevant lines covered (78.45%)

32.71 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

81.48
/src/renderer/transforms/forge.ts
1
import { Files, PACKAGE_NAME, RunnableVersion } from '../../interfaces';
1✔
2
import { getForgeVersion } from '../utils/get-package';
1✔
3

4
/**
5
 * This transform turns the files into an electron-forge
6
 * project.
7
 */
8
export async function forgeTransform(
3✔
9
  files: Files,
3✔
10
  version?: RunnableVersion,
3✔
11
): Promise<Files> {
3✔
12
  if (files.get(PACKAGE_NAME)) {
3✔
13
    try {
3✔
14
      const parsed = JSON.parse(files.get(PACKAGE_NAME)!);
3✔
15

16
      parsed.config ||= {};
3✔
17
      parsed.devDependencies ||= {};
3✔
18
      parsed.license ||= 'MIT';
3✔
19
      parsed.scripts ||= {};
3✔
20
      const { config, devDependencies, scripts } = parsed;
3✔
21

22
      // devDependencies
23
      const forgeVersion = getForgeVersion();
3✔
24
      devDependencies['@electron-forge/cli'] = forgeVersion;
3✔
25
      devDependencies['@electron-forge/maker-deb'] = forgeVersion;
3✔
26
      devDependencies['@electron-forge/maker-rpm'] = forgeVersion;
3✔
27
      devDependencies['@electron-forge/maker-squirrel'] = forgeVersion;
3✔
28
      devDependencies['@electron-forge/maker-zip'] = forgeVersion;
3✔
29

30
      // Scripts
31
      scripts.start = 'electron-forge start';
3✔
32
      scripts.package = 'electron-forge package';
3✔
33
      scripts.make = 'electron-forge make';
3✔
34
      scripts.publish = 'electron-forge publish';
3✔
35
      scripts.lint = 'echo "No linting configured"';
3✔
36

37
      // electron-forge config
38
      config.forge = {};
3✔
39
      config.forge.packagerConfig = {};
3✔
40

41
      const nightlyVersion = devDependencies['electron-nightly'];
3✔
42
      if (nightlyVersion) {
3✔
43
        // Fetch forced ABI for nightly.
44
        const { modules } = (await window.ElectronFiddle.getReleaseInfo(
1✔
45
          nightlyVersion,
1✔
46
        ))!;
1✔
47

48
        config.forge.electronRebuildConfig = {
1✔
49
          forceABI: parseInt(modules.toString().trim()),
1✔
50
        };
1✔
51
      }
1✔
52

53
      // Package local version if available.
54
      if (version?.localPath) {
3!
55
        devDependencies['@electron-forge/plugin-local-electron'] = forgeVersion;
×
56
        config.forge.plugins = [
×
UNCOV
57
          {
×
UNCOV
58
            name: '@electron-forge/plugin-local-electron',
×
UNCOV
59
            config: {
×
UNCOV
60
              electronPath: version.localPath,
×
UNCOV
61
            },
×
UNCOV
62
          },
×
UNCOV
63
        ];
×
64

65
        // Replace electron dep in package.json with a legitimate
66
        // released version so it doesn't error on npm install.
67
        if (parsed.devDependencies.electron) {
×
68
          const latest = await window.ElectronFiddle.getLatestStable();
×
69
          parsed.devDependencies.electron = latest?.version;
×
UNCOV
70
        }
×
UNCOV
71
      }
✔
72

73
      // electron-forge makers
74
      config.forge.makers = [
2✔
75
        {
2✔
76
          name: '@electron-forge/maker-squirrel',
2✔
77
        },
2✔
78
        {
2✔
79
          name: '@electron-forge/maker-zip',
2✔
80
          platforms: ['darwin'],
2✔
81
        },
2✔
82
        {
2✔
83
          name: '@electron-forge/maker-deb',
2✔
84
          config: {},
2✔
85
        },
2✔
86
        {
2✔
87
          name: '@electron-forge/maker-rpm',
2✔
88
          config: {},
2✔
89
        },
2✔
90
      ];
2✔
91

92
      files.set(PACKAGE_NAME, JSON.stringify(parsed, undefined, 2));
2✔
93
    } catch (error) {
3✔
94
      console.warn(`Forge Transform: Failed to parse package.json`, { error });
1✔
95
    }
1✔
96
  }
3✔
97

98
  return files;
3✔
99
}
3✔
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc