/**
  * Assert that part of license agreement text is present on Terms & Agreement page.
  *
  * @param Install $installPage
  * @return void
  */
 public function processAssert(Install $installPage)
 {
     try {
         \PHPUnit_Framework_Assert::assertContains(self::LICENSE_AGREEMENT_TEXT, $installPage->getLicenseBlock()->getLicense(), 'License agreement text is absent.');
     } catch (\Exception $e) {
         \PHPUnit_Framework_Assert::assertContains(self::DEFAULT_LICENSE_AGREEMENT_TEXT, $installPage->getLicenseBlock()->getLicense(), 'License agreement text is absent.');
     }
 }
 /**
  * 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];
 }