const execa = require('execa');
const globby = require('globby');

const runCypress = async () => {
  if (process.env.IS_FORK === 'true') {
    const machineIndex = parseInt(process.env.MACHINE_INDEX);
    const machineCount = parseInt(process.env.MACHINE_COUNT);
    const specs = await globby(['cypress/integration/*spec*.js']);
    const specsPerMachine = Math.floor(specs.length / machineCount);
    const start = (machineIndex - 1) * specsPerMachine;
    const machineSpecs =
      machineIndex === machineCount
        ? specs.slice(start)
        : specs.slice(start, start + specsPerMachine);

    await execa(
      'cypress',
      ['run', '--browser', 'chrome', '--headless', '--spec', machineSpecs.join(',')],
      { stdio: 'inherit', preferLocal: true },
    );
  } else {
    await execa(
      'cypress',
      [
        'run',
        '--browser',
        'chrome',
        '--headless',
        '--record',
        '--parallel',
        '--ci-build-id',
        process.env.GITHUB_SHA,
        '--group',
        'GitHub CI',
      ],
      { stdio: 'inherit', preferLocal: true },
    );
  }
};

runCypress();