diff --git a/src/Shopify.php b/src/Shopify.php index 4da3f9d810c45d0171516189db7e3d605ecf28fd..db6e113fdc805d293d3c5d32ad8f493c4b42cd4e 100644 --- a/src/Shopify.php +++ b/src/Shopify.php @@ -1,8 +1,64 @@ <?php +declare(strict_types=1); + namespace Octolize\Shopify\Codeception; +use Exception; + class Shopify extends \Codeception\Module { + public function loginAsAdmin() + { + $i = $this->getModule('WebDriver'); + $isPl = false; + if ($i->loadSessionSnapshot('admin')) { + return; + } + $i->amOnUrl($this->config['admin_url']); + try { + $i->moveMouseOver('body', rand(1, 100), rand(1, 100)); + $i->seeInCurrentUrl(parse_url($this->config['admin_url'], PHP_URL_PATH)); + } catch (Exception $e) { + $i->wait(rand(1, 2)); + try { + $i->waitForText('Continue with Google', 10); + } catch (Exception $e) { + $i->waitForText('Kontynuuj z Google', 30); + $isPl = true; + } + $i->click($isPl?'Kontynuuj z Google':'Continue with Google'); + try { + $i->seeInCurrentUrl(parse_url($this->config['admin_url'], PHP_URL_PATH)); + $i->dontSeeInCurrentUrl('google.com'); + } catch (Exception $e) { + try { + $i->waitForText($this->config['admin_username']); + $i->clickWithLeftButton(Locator::find('div', ['data-email' => $this->config['admin_username']])); + $i->seeInCurrentUrl(parse_url($this->config['admin_url'], PHP_URL_PATH)); + $i->dontSeeInCurrentUrl('google.com'); + } catch (Exception $e) { + $i->wait(rand(1, 5)); + $i->moveMouseOver('body', rand(1, 100), rand(1, 100)); + try { + $i->seeElement('input[name="identifier"]'); + $i->fillField('identifier', $this->config['admin_username']); + $i->click($isPl ? 'Dalej' : 'Next'); + $i->wait(rand(1, 5)); + $i->moveMouseOver('input[name=Passwd]', rand(1, 100), rand(1, 100)); + $i->fillField('Passwd', $this->config['google_password']); + $i->click($isPl ? 'Dalej' : 'Next'); + } catch (Exception $e) { + $i->wait(rand(1, 5)); + $i->moveMouseOver('body', rand(1, 100), rand(1, 100)); + $i->fillField('password', $this->config['google_password']); + $i->click($isPl ? 'Dalej' : 'Next'); + } + } + } + } + $i->saveSessionSnapshot('admin'); + } + }