Как запустить файл node.js в контейнере Cypress Docker? - PullRequest
0 голосов
/ 06 августа 2020

У меня есть файл docker -compose.yml, например:

version: '3.2'
services:
  pa-portal:
    image: web_app_image
    container_name: pa_portal
    volumes:
      - productDB:/web_app/db
    ports:
      - "8080:8080"
  cypress:
    image: "cypress/included:4.4.0"
    depends_on:
      - pa-portal
    environment:
      - CYPRESS_baseUrl=http://pa-portal:8080
    working_dir: /cypress-testing

    volumes:
      - ./:/cypress-testing

volumes:
  productDB:

Поэтому в сети по умолчанию у меня есть контейнер cypress (который запускает мои тесты при выполнении docker -compose up) и контейнер с именем pa-portal, в котором находится мое веб-приложение Django.

Я создал файл clear-db. js следующим образом, чтобы очистить определенную таблицу в базе данных:

var sqlite3 = require('sqlite3').verbose()

let db = new sqlite3.Database('pa-portal:/web_app/db/db.sqlite3', sqlite3.OPEN_READWRITE, (err) => {
    if (err) {
        console.error(err.message);
    }
    console.log('Connected to the database.');
});


db.run(`DELETE FROM table_name`, function (err) {
    if (err) {
        return console.error(err.message);
    }
    console.log(`Row(s) deleted ${this.changes}`);
});

/web_app/db/db.sqlite3 - это моя база данных, хранящаяся в контейнере docker.

В моих тестах Cypress я хочу запустить этот код в моем хуке beforeEach, чтобы очистить эту таблицу перед запуском следующий - но я не уверен, как это сделать. Мне нужно использовать cy.exec() или cy.task()? Нужно ли мне поместить код в функцию, а затем как-то вызвать ее из моих тестов?

...