/**
  * Install Magento via web interface.
  *
  * @param User $user
  * @param array $configData
  * @param FixtureFactory $fixtureFactory
  * @param AssertAgreementTextPresent $assertLicense
  * @param AssertSuccessfulReadinessCheck $assertReadiness
  * @param AssertAdminUriAutogenerated $assertAdminUri
  * @param array $install [optional]
  * @return array
  */
 public function test(User $user, array $configData, FixtureFactory $fixtureFactory, AssertAgreementTextPresent $assertLicense, AssertSuccessfulReadinessCheck $assertReadiness, AssertAdminUriAutogenerated $assertAdminUri, array $install = [])
 {
     $dataConfig = array_merge($install, $configData);
     if (isset($dataConfig['httpsFront'])) {
         $dataConfig['https'] = str_replace('http', 'https', $dataConfig['baseUrl']);
     }
     /** @var InstallConfig $installConfig */
     $installConfig = $fixtureFactory->create('Magento\\Install\\Test\\Fixture\\Install', ['data' => $dataConfig]);
     // Steps
     $this->installPage->open();
     // Verify license agreement.
     $this->installPage->getLandingBlock()->clickTermsAndAgreement();
     $assertLicense->processAssert($this->installPage);
     $this->installPage->getLicenseBlock()->clickBack();
     $this->installPage->getLandingBlock()->clickAgreeAndSetup();
     // Step 1: Readiness Check.
     $this->installPage->getReadinessBlock()->clickReadinessCheck();
     $assertReadiness->processAssert($this->installPage);
     $this->installPage->getReadinessBlock()->clickNext();
     // Step 2: Add a Database.
     $this->installPage->getDatabaseBlock()->fill($installConfig);
     $this->installPage->getDatabaseBlock()->clickNext();
     // Step 3: Web Configuration.
     $assertAdminUri->processAssert($this->installPage);
     $this->installPage->getWebConfigBlock()->clickAdvancedOptions();
     $this->installPage->getWebConfigBlock()->fill($installConfig);
     $this->installPage->getWebConfigBlock()->clickNext();
     // Step 4: Customize Your Store
     $this->installPage->getCustomizeStoreBlock()->fill($installConfig);
     $this->installPage->getCustomizeStoreBlock()->clickNext();
     // Step 5: Create Admin Account.
     $this->installPage->getCreateAdminBlock()->fill($user);
     $this->installPage->getCreateAdminBlock()->clickNext();
     // Step 6: Install.
     $this->installPage->getInstallBlock()->clickInstallNow();
     return ['installConfig' => $installConfig];
 }