Cypress : Ошибка: Ошибка компиляции Webpack Модуль не найден: Ошибка: Невозможно разрешить ‘cypress-wait-until’

Вопрос или проблема

Я добавил ‘cypress-wait-until’ в свой проект. Все тесты выполняются локально как из панели управления, так и в безголовом режиме. Но когда они запускаются из конвейера в Azure, все они терпят неудачу, потому что не могут разрешить новый пакет. Мне нужно ли иметь задачу конвейера, которая устанавливает пакет cypress-wait-until перед тем, как строить тесты для их выполнения?

2024-10-31T15:36:00.4638003Z   Выполнение:  add-essential-item-to-basket.cy.ts                                              (1 из 9)
2024-10-31T15:36:07.8123501Z 
2024-10-31T15:36:07.8128234Z Ой... мы обнаружили ошибку при подготовке этого тестового файла:
2024-10-31T15:36:07.8128603Z 
2024-10-31T15:36:07.8129030Z   > cypress/support/e2e.js
2024-10-31T15:36:07.8130773Z 
2024-10-31T15:36:07.8131891Z Ошибка была:
2024-10-31T15:36:07.8132124Z 
2024-10-31T15:36:07.8132500Z Ошибка: Ошибка компиляции Webpack
2024-10-31T15:36:07.8133621Z Модуль не найден: Ошибка: Невозможно разрешить 'cypress-wait-until' в '/azp/_work/1/s/cypress/support'
2024-10-31T15:36:07.8134898Z     at handle (/root/.cache/Cypress/13.13.1/Cypress/resources/app/node_modules/@packages/server/node_modules/@cypress/webpack-preprocessor/dist/index.js:212:23)
2024-10-31T15:36:07.8135730Z     at finalCallback (/root/.cache/Cypress/13.13.1/Cypress/resources/app/node_modules/webpack/lib/Compiler.js:441:32)
2024-10-31T15:36:07.8136173Z     at /root/.cache/Cypress/13.13.1/Cypress/resources/app/node_modules/webpack/lib/Compiler.js:505:17
2024-10-31T15:36:07.8136559Z     at /root/.cache/Cypress/13.13.1/Cypress/resources/app/node_modules/webpack/lib/HookWebpackError.js:68:3
2024-10-31T15:36:07.8137316Z     at Hook.eval [as callAsync] (eval at create (/root/.cache/Cypress/13.13.1/Cypress/resources/app/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:6:1)
2024-10-31T15:36:07.8137818Z     at Hook.CALL_ASYNC_DELEGATE [as _callAsync] (/root/.cache/Cypress/13.13.1/Cypress/resources/app/node_modules/tapable/lib/Hook.js:18:14)
2024-10-31T15:36:07.8138237Z     at Cache.storeBuildDependencies (/root/.cache/Cypress/13.13.1/Cypress/resources/app/node_modules/webpack/lib/Cache.js:122:37)
2024-10-31T15:36:07.8138641Z     at /root/.cache/Cypress/13.13.1/Cypress/resources/app/node_modules/webpack/lib/Compiler.js:501:19
2024-10-31T15:36:07.8139086Z     at Hook.eval [as callAsync] (eval at create (/root/.cache/Cypress/13.13.1/Cypress/resources/app/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:6:1)
2024-10-31T15:36:07.8140210Z     at Hook.CALL_ASYNC_DELEGATE [as _callAsync] (/root/.cache/Cypress/13.13.1/Cypress/resources/app/node_modules/tapable/lib/Hook.js:18:14)
2024-10-31T15:36:07.8140875Z     at /root/.cache/Cypress/13.13.1/Cypress/resources/app/node_modules/webpack/lib/Compiler.js:498:23
2024-10-31T15:36:07.8141286Z     at Compiler.emitRecords (/root/.cache/Cypress/13.13.1/Cypress/resources/app/node_modules/webpack/lib/Compiler.js:919:5)
2024-10-31T15:36:07.8141662Z     at /root/.cache/Cypress/13.13.1/Cypress/resources/app/node_modules/webpack/lib/Compiler.js:490:11
2024-10-31T15:36:07.8142032Z     at /root/.cache/Cypress/13.13.1/Cypress/resources/app/node_modules/webpack/lib/Compiler.js:885:14
2024-10-31T15:36:07.8142479Z     at Hook.eval [as callAsync] (eval at create (/root/.cache/Cypress/13.13.1/Cypress/resources/app/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:6:1)
2024-10-31T15:36:07.8142963Z     at Hook.CALL_ASYNC_DELEGATE [as _callAsync] (/root/.cache/Cypress/13.13.1/Cypress/resources/app/node_modules/tapable/lib/Hook.js:18:14)
2024-10-31T15:36:07.8143369Z     at /root/.cache/Cypress/13.13.1/Cypress/resources/app/node_modules/webpack/lib/Compiler.js:882:27
2024-10-31T15:36:07.8143947Z     at /root/.cache/Cypress/13.13.1/Cypress/resources/app/node_modules/neo-async/async.js:2818:7
2024-10-31T15:36:07.8144438Z     at done (/root/.cache/Cypress/13.13.1/Cypress/resources/app/node_modules/neo-async/async.js:3522:9)
2024-10-31T15:36:07.8144832Z     at alreadyWritten (/root/.cache/Cypress/13.13.1/Cypress/resources/app/node_modules/webpack/lib/Compiler.js:714:8)
2024-10-31T15:36:07.8145223Z     at /root/.cache/Cypress/13.13.1/Cypress/resources/app/node_modules/webpack/lib/Compiler.js:802:19
2024-10-31T15:36:07.8145735Z     at /root/.cache/Cypress/13.13.1/Cypress/resources/app/node_modules/graceful-fs/graceful-fs.js:123:16
2024-10-31T15:36:07.8146312Z     at /root/.cache/Cypress/13.13.1/Cypress/resources/app/node_modules/@packages/server/node_modules/graceful-fs/graceful-fs.js:123:16
2024-10-31T15:36:07.8146915Z     at /root/.cache/Cypress/13.13.1/Cypress/resources/app/node_modules/@packages/server/node_modules/graceful-fs/graceful-fs.js:123:16
2024-10-31T15:36:07.8147320Z     at FSReqCallback.readFileAfterClose [as oncomplete] (node:internal/fs/read_file_context:68:3)
2024-10-31T15:36:07.8147523Z 
2024-10-31T15:36:07.8148145Z Это произошло во время компиляции и упаковки вашего тестового кода Cypress. Это обычно вызвано:
2024-10-31T15:36:07.8148369Z 
2024-10-31T15:36:07.8148805Z - Отсутствующим файлом или зависимостью
2024-10-31T15:36:07.8149291Z - Синтаксической ошибкой в файле или одной из его зависимостей

Это работает, когда я запускаю свои тесты локально:

$ yarn cy:test
yarn run v1.22.21
$ yarn run cleanE2EReports && yarn run cy:terminal && yarn merge-reports && yarn create-html-report
$ rm -fr cypress/reports
$ cypress run --browser chrome

DevTools слушает на ws://127.0.0.1:52722/devtools/browser/755f7ae8-10e3-4ea8-9fe3-f7ecb8c63b50

====================================================================================================

  (Запуск)

  ┌────────────────────────────────────────────────────────────────────────────────────────────────┐
  │ Cypress:        13.13.1                                                                        │
  │ Браузер:        Chrome 129 (безголовый)                                                          │
  │ Версия Node:    v20.9.0 (C:\Program Files\nodejs\node.exe)                                     │
  │ Спецификации:    9 найдены (add-essential-item-to-basket.cy.ts, add-product-to-basket-using-quick │
  │                 view.cy.ts, add-product-to-wishlist.cy.ts, checkout-stripe-failed.cy.ts, check │
  │                 out-stripe-success.cy.ts, complete-checkout-retrieves-order.cy.ts, complete-ch │
  │                 eckout-with-promo-code...)                                                     │
  │ Искали:          cypress/e2e/**/*.cy.ts                                                         │
  │ Эксперименты:    experimentalRunAllSpecs=true,experimentalMemoryManagement=true,experimentalWe… │
  └────────────────────────────────────────────────────────────────────────────────────────────────┘

────────────────────────────────────────────────────────────────────────────────────────────────────

  Выполнение:  add-essential-item-to-basket.cy.ts                                              (1 из 9)

  Добавить продукт с и без основного предмета, используя модальное окно основных предметов
    √ Добавить продукт в корзину и основной предмет с использованием основного предмета с StandardNoCheckout & TEST1V2EG (8461мс)
    √ Добавить продукт в корзину без основных предметов с использованием StandardNoCheckout & TEST1V0EG (8995мс)

  2 успешных (18с)

[mochawesome] Отчет JSON сохранен в C:\Users\paul.heathcote\Repos\WebsiteWebApp\cypress\reports\mocha\mochawesome.json

[mochawesome] Отчет HTML сохранен в C:\Users\paul.heathcote\Repos\WebsiteWebApp\cypress\reports\mocha\mochawesome.html

Ответ или решение

Ошибка Cypress: Webpack Compilation Error Module not found: Error: Can’t resolve ‘cypress-wait-until’

Введение

В процессе реализации автоматизированного тестирования при помощи Cypress могут возникать различные ошибки, одной из которых является ошибка компиляции Webpack, возникающая из-за недоступного модуля. В вашем случае проблема заключается в том, что при запуске тестов в Azure Pipeline не удается найти модуль cypress-wait-until, несмотря на то, что все работает корректно локально. Данная статья проанализирует причины возникновения этой ошибки и предоставит рекомендации по ее устранению.

Суть проблемы

Вы упомянули, что после добавления модуля cypress-wait-until тесты успешно выполняются локально, однако при попытке запуска через Azure Pipeline возникает ошибка компиляции Webpack, указывающая на невозможность разрешения модуля. Это может быть связано с тем, что пакет не установлен в среде CI/CD, где происходит выполнение тестов.

Возможные причины ошибки

  1. Недостаток установки пакетов: Ваша среда затрат (Azure Pipeline) вероятно не имеет установленного пакета cypress-wait-until. Это значит, что при сборке тестов среда не может найти необходимые зависимости.

  2. Кэширование зависимостей: Если вы используете кэширование в своем CI/CD-про процессе, возможно, что устаревшая версия зависимостей загружена из кэша, и модуль cypress-wait-until не был добавлен в этот кэш.

  3. Отсутствие обновлений: Если Azure Pipeline не настроен на автоматическое обновление файлов package.json и yarn.lock, это может привести к тому, что новые зависимости не будут установлены.

Рекомендации по устранению проблемы

  1. Добавление установки зависимости в Azure Pipeline: Убедитесь, что в вашем пайплайне имеется шаг для установки зависимостей перед запуском тестов. Например, добавьте следующий шаг в свой файл YAML:

    - script: |
        npm install cypress-wait-until
        npm install
      displayName: 'Установка зависимостей'

    Или с использованием Yarn:

    - script: |
        yarn install
      displayName: 'Установка зависимостей'
  2. Удаление кэша: Если вы подозреваете, что устаревшая версия зависимостей хранится в кэше, попробуйте очистить кэш перед установкой:

    - script: |
        npm cache clean --force
        npm install
      displayName: 'Очистка кэша и установка зависимостей'

    И для Yarn:

    - script: |
        yarn cache clean
        yarn install
      displayName: 'Очистка кэша Yarn и установка зависимостей'
  3. Проверка наличия cypress-wait-until в package.json: Убедитесь, что пакет cypress-wait-until правильно указан в вашем файле package.json под зависимостями. Например:

    "devDependencies": {
        "cypress-wait-until": "^1.0.0"
    }
  4. Логирование зависимостей: Для дополнительной прозрачности вы можете добавить шаг для логирования установленных пакетов в вашем пайплайне:

    - script: |
        npm list --depth=0
      displayName: 'Проверка установленных зависимостей'

Заключение

В заключение, ошибка в Azure Pipeline, указывающая на невозможность разрешения модуля cypress-wait-until, вероятнее всего, вызвана отсутствием установки этого пакета в среде CI/CD. Следуя предложенным рекомендациям, вы можете устранить эту проблему и обеспечить стабильную работу ваших тестов в облачной инфраструктуре. Также рекомендуется регулярно проверять настройки вашего пайплайна на предмет обновлений и правильной установки необходимых зависимостей.

Оцените материал
Добавить комментарий

Капча загружается...