Не запускает Cypress и Linux cron

#linux #cron #cypress

#linux #cron #cypress

Вопрос:

Я надеюсь на вашу помощь. Я установил Cypress в Linux, и тест успешно выполняется вручную по команде cypress run --record --key *******

Однако, когда я пишу команду в Cron, тест не выполняется. В консоли нет ошибок. Cron работает. Другие команды, такие как вывод даты и времени, работают нормально.

Я сделал это:

  1. Создалbash-script.sh со следующим содержимым

 #!/bin/bash
cd /home/ubuntu/project-name/cypress
/home/ubuntu/project-name/cypress/node_modules/.bin/cypress run --record --key *****************  

  1. Поместите файл bash-script в папку /home / ubuntu/. Теперь это путь к сценарию / home /ubuntu/bash-script.sh

  2. С помощью команды ‘crontab -l’ запланирована следующая команда */5 * * * * /home/ubuntu/bash-script.sh >> /home/ubuntu/bash-script-log.log

Но запланированная команда не выполняется. Журналы пусты. Можете ли вы сказать мне, что я делаю не так?

Ответ №1:

Попробуйте записать переменную PATH в начале скрипта bash. Просто выполните echo $PATH; в вашем терминале / bash и скопируйте результат, чтобы создать переменную PATH следующим образом.

Давайте сначала убедимся, что cypress работает в bash, а затем запустим это в crontab.

 #!/bin/bash
PATH=/home/ubuntu/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

## Set your cypress folder
yourfullpathtocypressfolder=/home/ubuntu/project-name/cypress;

## Check that we can echo cypress version
$yourfullpathtocypressfolder/node_modules/.bin/cypress -v >> Iamalive.log
  
  

После установки переменной yourfullpathtocypressfolder Сохраните ваш скрипт как myscript.sh . попробуйте запустить этот скрипт как bash myscript.sh в вашем терминале.

Что касается полного кода для записи вашего проекта с использованием crontab, то он выглядит следующим образом. Убедитесь, что вы обновили свой ProjectID в cypress.json!

Вы также можете проверить эту сутьhttps://gist.github.com/senniksoft/0e062165fb9121be8d8a0fca4038fbc1

 #!/bin/bash
        PATH=/home/ubuntu/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
        
## Set your cypress folder
yourfullpathtocypressfolder=/home/ubuntu/project-name/cypress;
    
## Set your project key
yourprojectkey=xxxxxxxx-c69f-4c44-81c9-xxxxxxxxxxxxx;
    
cd $yourfullpathtocypressfolder;
        
## Example Code to record
./node_modules/.bin/cypress run --record --key $yourprojectkey --spec "cypress/integration/examples/actions.spec.js" >> RecordLog.log
  

После этого предоставьте надлежащие разрешения, чтобы crontab мог выполнить скрипт.

chmod x /home/ubuntu/myscript.sh;

Добавьте этот скрипт в crontab следующим образом

 */5 * * * * bash /home/ubuntu/myscript.sh
  

Пример вывода в журнале после запуска этого скрипта.

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

  (Run Starting)

  ┌────────────────────────────────────────────────────────────────────────────────────────────────┐
  │ Cypress:    5.1.0                                                                              │
  │ Browser:    Electron 83 (headless)                                                             │
  │ Specs:      1 found (examples/actions.spec.js)                                                 │
  │ Searched:   cypress/integration/examples/actions.spec.js                                       │
  │ Params:     Tag: false, Group: false, Parallel: false                                          │
  │ Run URL:    https://dashboard.cypress.io/projects/2bn65e/runs/2                                │
  └────────────────────────────────────────────────────────────────────────────────────────────────┘


────────────────────────────────────────────────────────────────────────────────────────────────────
                                                                                                    
  Running:  examples/actions.spec.js                                                        (1 of 1)
  Estimated: 22 seconds


  Actions
    ✓ .type() - type into a DOM element (7441ms)
    ✓ .focus() - focus on a DOM element (469ms)
    ✓ .blur() - blur off a DOM element (741ms)
    ✓ .clear() - clears an input or textarea element (790ms)
    ✓ .submit() - submit a form (670ms)
    ✓ .click() - click on a DOM element (2705ms)
    ✓ .dblclick() - double click on a DOM element (476ms)
    ✓ .rightclick() - right click on a DOM element (360ms)
    ✓ .check() - check a checkbox or radio element (1114ms)
    ✓ .uncheck() - uncheck a checkbox element (1160ms)
    ✓ .select() - select an option in a <select> element (1068ms)
    ✓ .scrollIntoView() - scroll an element into view (798ms)
    ✓ .trigger() - trigger an event on a DOM element (383ms)
    ✓ cy.scrollTo() - scroll the window or element to a position (2321ms)


  14 passing (24s)
  

Комментарии:

1. Спасибо за ответ. Мой файл теперь выглядит так: #!/bin/bash #echo PATH; PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin; cypress run --record --key ************** но ничего не изменилось.

2. Добро пожаловать. Можете ли вы попробовать запустить echo $PATH в своем терминале и вставить результат сюда?

3. Да, конечно. /home/ubuntu/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

4. Спасибо за ответ! Я постараюсь сделать так, как вы сказали, и написать о результатах. Спасибо.

5. Мне это удалось благодаря вашим инструкциям. Большое вам спасибо и удачи!