Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
UpgradeSystemTest.php
Go to the documentation of this file.
1 <?php
8 
9 use Magento\Mtf\TestCase\Injectable;
10 use Magento\Setup\Test\Fixture\Upgrade;
11 use Magento\Setup\Test\Page\Adminhtml\SetupWizard;
12 use Magento\Backend\Test\Page\Adminhtml\Dashboard;
13 use Magento\Mtf\Fixture\FixtureFactory;
18 
19 class UpgradeSystemTest extends Injectable
20 {
26  protected $setupWizard;
27 
31  protected $adminDashboard;
32 
40  public function __inject(
41  Dashboard $adminDashboard,
42  SetupWizard $setupWizard
43  ) {
44  $this->adminDashboard = $adminDashboard;
45  $this->setupWizard = $setupWizard;
46  }
47 
57  public function test(
58  FixtureFactory $fixtureFactory,
59  AssertSuccessfulReadinessCheck $assertReadiness,
60  AssertVersionAndEditionCheck $assertVersionAndEdition,
61  AssertSuccessMessage $assertSuccessMessage,
62  AssertApplicationVersion $assertApplicationVersion,
63  array $upgrade = []
64  ) {
65  // Create fixture
66  $upgradeFixture = $fixtureFactory->create(Upgrade::class, ['data' => $upgrade]);
67  $createBackupConfig = array_intersect_key(
68  $upgrade,
69  ['optionsCode' => '', 'optionsMedia' => '', 'optionsDb' => '']
70  );
71  $createBackupFixture = $fixtureFactory->create(
72  Upgrade::class,
73  ['data' => $createBackupConfig]
74  );
75  $version = $upgrade['upgradeVersion'];
76 
77  $suffix = "( (CE|EE|B2B))$";
78  $normalVersion = '(0|[1-9]\d*)';
79  $preReleaseVersion = "((0(?!\\d+(\\.|\\+|{$suffix}))|[1-9A-Za-z])[0-9A-Za-z-]*)";
80  $buildVersion = '([0-9A-Za-z][0-9A-Za-z-]*)';
81  $versionPattern = "/^{$normalVersion}(\\.{$normalVersion}){2}"
82  . "(-{$preReleaseVersion}(\\.{$preReleaseVersion})*)?"
83  . "(\\+{$buildVersion}(\\.{$buildVersion})*)?{$suffix}/";
84 
85  if (preg_match($versionPattern, $version)) {
86  preg_match("/(.*){$suffix}/", $version, $matches);
87  $version = $matches[1];
88  } else {
89  $this->fail(
90  "Provided version format does not comply with semantic versioning specification. Got '{$version}'"
91  );
92  }
93 
94  // Authenticate in admin area
95  $this->adminDashboard->open();
96 
97  // Open Web Setup Wizard
98  $this->setupWizard->open();
99 
100  // Authenticate on repo.magento.com
101  if ($upgrade['needAuthentication'] === 'Yes') {
102  $this->setupWizard->getSystemConfig()->clickSystemConfig();
103  $this->setupWizard->getAuthentication()->fill($upgradeFixture);
104  $this->setupWizard->getAuthentication()->clickSaveConfig();
105  $this->setupWizard->open();
106  }
107 
108  // Select upgrade to version
109  $this->setupWizard->getSetupHome()->clickSystemUpgrade();
110  $this->setupWizard->getSelectVersion()->fill($upgradeFixture);
111  if ($upgrade['otherComponents'] === 'Yes') {
112  $this->setupWizard->getSelectVersion()->chooseUpgradeOtherComponents($upgrade['otherComponentsList']);
113  }
114  $this->setupWizard->getSelectVersion()->clickNext();
115 
116  // Readiness Check
117  $this->setupWizard->getReadiness()->clickReadinessCheck();
118  $assertReadiness->processAssert($this->setupWizard);
119  $this->setupWizard->getReadiness()->clickNext();
120 
121  // Create Backup page
122  $this->setupWizard->getCreateBackup()->fill($createBackupFixture);
123  $this->setupWizard->getCreateBackup()->clickNext();
124 
125  // Check info and press 'Upgrade' button
126  $upgrade['version'] = $version;
127  $upgrade['selectedPackages'] = $this->setupWizard->getSelectVersion()->getSelectedPackages();
128  $assertVersionAndEdition->processAssert($this->setupWizard, $upgrade);
129  $this->setupWizard->getSystemUpgrade()->clickSystemUpgrade();
130 
131  $assertSuccessMessage->processAssert($this->setupWizard, $upgrade['package']);
132 
133  // Check application version
134  $this->adminDashboard->open();
135  $assertApplicationVersion->processAssert($this->adminDashboard, $version);
136  }
137 }
$suffix
Definition: name.phtml:27
__inject(Dashboard $adminDashboard, SetupWizard $setupWizard)
test(FixtureFactory $fixtureFactory, AssertSuccessfulReadinessCheck $assertReadiness, AssertVersionAndEditionCheck $assertVersionAndEdition, AssertSuccessMessage $assertSuccessMessage, AssertApplicationVersion $assertApplicationVersion, array $upgrade=[])
processAssert(SetupWizard $setupWizard, $package)