public function githubLighthouseStatus($sha, $opts = [
        'hostname' => null,
        'protocol' => 'http',
        'performance' => false,
        'performance-score' => 50,
        'accessibility' => false,
        'accessibility-score' => 50,
        'best-practices' => false,
        'best-practices-score' => 50,
        'progressive-web-app' => false,
        'progressive-web-app-score' => 50,
    ])
    {
        $host = ProjectX::getProjectConfig()
            ->getHost();

        $protocol = $opts['protocol'];
        $hostname = isset($opts['hostname'])
            ? $opts['hostname']
            : (isset($host['name']) ? $host['name'] : 'localhost');

        $url = "$protocol://$hostname";
        $path = new \SplFileInfo("/tmp/projectx-lighthouse-$sha.json");

        $this->taskGoogleLighthouse()
            ->setUrl($url)
            ->chromeFlags([
                '--headless',
                '--no-sandbox'
            ])
            ->setOutput('json')
            ->setOutputPath($path)
            ->run();

        if (!file_exists($path)) {
            throw new \RuntimeException(
                'Unable to locate the Google lighthouse results.'
            );
        }
        $selected = array_filter([
            'performance',
            'accessibility',
            'best-practices',
            'progressive-web-app'
        ], function ($key) use ($opts) {
            return $opts[$key] === true;
        });

        $report_data = $this->findLighthouseScoreReportData(
            $path,
            $selected
        );
        $state = $this->determineLighthouseState($report_data, $opts);

        $this->taskGitHubRepoStatusesCreate($this->getToken())
            ->setAccount($this->getAccount())
            ->setRepository($this->getRepository())
            ->setSha($sha)
            ->setParamState($state)
            ->setParamDescription('Google Lighthouse Tests')
            ->setParamContext('project-x/lighthouse')
            ->run();
    }