Skip to content
Snippets Groups Projects
Select Git revision
  • f3b550b1b5f71711bfd1542a35d5ec651f865cae
  • main default protected
  • 1.0.2
  • 1.0.1
  • 1.0.0
  • 1.0.0-beta7
  • 1.0.0-beta6
  • 1.0.0-beta4
  • 1.0.0-beta3
  • 1.0.0-beta2
  • 1.0.0-beta1
11 results

Shopify.php

Blame
  • Shopify.php 3.50 KiB
    <?php
    
    namespace Octolize\Shopify\Codeception;
    
    use Codeception\Module\WebDriver;
    use Codeception\Util\Locator;
    use Exception;
    
    class Shopify extends WebDriver
    {
    
        public function loginAsAdmin(): void
        {
            $i    = $this;
            if ($i->loadSessionSnapshot('admin')) {
                return;
            }
            $i->amOnUrl($this->config['admin_url']);
            try {
                $this->amLoggedInAsAdmin($i);
            } catch (Exception $e) {
                try {
                    $i->wait(rand(1, 2));
                    $i->see('Choose an account');
                    $i->click($this->config['admin_username']);
                } catch (Exception $e) {
                    $this->loginWithGoogle($i);
                }
            }
            $i->wait(rand(1, 5));
            $i->saveSessionSnapshot('admin');
        }
    
        public function amOnPage($page): void
        {
            parent::amOnPage($page);
            $this->loginOnFront();
        }
    
        public function loginOnFront(): void
        {
            $i = $this;
            try {
                $i->seeInCurrentUrl('password');
                $i->fillField('password', $this->config['store_password']);
                $i->click('button[type=submit]');
            } catch (Exception $e) {
                // do nothing
            }
        }
    
        /**
         * @param Shopify $i
         *
         * @return void
         */
        private function amLoggedInAsAdmin(Shopify $i): void
        {
            $i->moveMouseOver('body', rand(1, 100), rand(1, 100));
            $i->seeInCurrentUrl(parse_url($this->config['admin_url'], PHP_URL_PATH));
        }
    
        /**
         * @param Shopify $i
         *
         * @return void
         * @throws Exception
         */
        private function loginWithGoogle(Shopify $i): void
        {
            $isPl = false;
            try {
                $i->waitForText('Continue with Google', 5);
            } catch (Exception $e) {
                $i->waitForText('Kontynuuj z Google', 5);
                $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) {
                    $this->loginToGoogle($i, $isPl);
                }
            }
        }
    
        /**
         * @param Shopify $i
         * @param bool $isPl
         *
         * @return void
         */
        private function loginToGoogle(Shopify $i, bool $isPl): void
        {
            $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');
            }
        }
    
    }