Travis selenium не работает - django - stripe - перенаправление javascript

У меня есть тест selenium, который работает на моей локальной машине.

 Creating test database for alias 'default'...
 System check identified no issues (0 silenced).
  .............
  ----------------------------------------------------------------------
  Ran 13 tests in 32.510s

  OK
  Destroying test database for alias 'default'...

Я использую selenium для тестирования stripe checkout. Когда я нажимаю() на кнопку, я получаю перенаправление на stripe checkout.

Работает с javascript из документации stripe:

        <script type="text/javascript">
        // Create an instance of the Stripe object with your publishable API key
        var stripe = Stripe("{{ public_api_key }}");
        var checkoutButton = document.getElementById("checkout-button");

        const headers = new Headers({
            'X-CSRFToken': "{{ csrf_token }}"
        })

        checkoutButton.addEventListener("click", function () {
            fetch("{% url "sale:detail" ordered.pk %}", {
                method: "POST",
                headers,
            })
                .then(function (response) {
                    response_json = response.json();
                    return response_json;
                })
                .then(function (session) {
                    return stripe.redirectToCheckout({sessionId: session.id});
                })
                .then(function (result) {
                    // If redirectToCheckout fails due to a browser or network
                    // error, you should display the localized error message to your
                    // customer using error.message.
                    if (result.error) {
                        alert(result.error.message);
                    }
                })
                .catch(function (error) {
                    console.error("Error:", error);
                });
        });
    </script>

однако когда я делаю тот же тест на travis-ci, я получаю эту ошибку:

selenium.common.exceptions.TimeoutException

из-за:

   WebDriverWait(
     selenium, timeout
   ).until(
      EC.url_changes(current_url)
   )

Итак, url никогда не меняется, когда selenium нажимает на кнопку chekout... Я подозреваю javascript...

У веб-драйвера есть следующие опции:

opts = ChromeOptions()
opts.add_argument("--enable-javascript")
opts.add_argument('--no-sandbox')
opts.add_argument('--no-first-run')
opts.add_argument('--no-default-browser-check')
opts.add_argument('--disable-default-apps')

cls.selenium = WebDriver(chrome_options=opts)

my travis.yml

sudo: true
language: python
python:
  - "3.9"

addons:
  chrome: stable

before_install:
  - wget https://chromedriver.storage.googleapis.com/92.0.4515.107/chromedriver_linux64.zip -P ~/
  - unzip ~/chromedriver_linux64.zip -d ~/
  - rm ~/chromedriver_linux64.zip
  - sudo mv -f ~/chromedriver /usr/local/share/
  - sudo chmod +x /usr/local/share/chromedriver
  - sudo ln -s /usr/local/share/chromedriver /usr/local/bin/chromedriver

before_script:
  - export DISPLAY=:99.0
  - sudo apt-get install xvfb xserver-xephyr tigervnc-standalone-server xfonts-base
  - pip install -r requirements_dev.txt

branches:
  only:
    - master

env: DJANGO_SETTINGS_MODULE="myapp.settings"

dist: focal

script:
  - python manage.py makemigrations sale catalogue
  - python manage.py migrate
  - python manage.py test

спасибо...

Вернуться на верх