Переименование кипарис скриншот - PullRequest
0 голосов
/ 16 марта 2020

Я пытаюсь переименовать скриншоты, созданные для моих неудачных тестов на кипарис. Я последовал примеру документации https://docs.cypress.io/api/plugins/after-screenshot-api.html#Modify -screenshot-details

Для тестирования я использую наборы тестов, предоставленные Cypress.

Переименование файла работает, как Пока я использую строку stati c, но когда я пытаюсь получить доступ к данным из объекта подробностей, таких как отметка времени или старый путь, переименование не выполняется.

 Error: ENOENT: no such file or directory, rename 'C:\projects\playground\cypress\screenshots\examples\actions.spec
.js\Actions-- .type() - type into a DOM element (failed).png'
-> 'C:\projects\playground\cypress\mochareports\screenshots\2020-03-16T08.55:09.929Z.png'

Мой код выглядит так

const fs = require('fs')

//Screenshots names can be too long for the file system, taht why we truncate them
module.exports = (on, config) => {
    on('after:screenshot', (details) => {
        console.log(details) // print all details to terminal
        //const fileName = details.takenAt.replace(":",".") +".png"; // This fails

        const fileName = details.specName +".1png"; // This fails
        console.log(fileName);
        //const fileName = "test.png"; // This works
        const newPath = "cypress/mochareports/screenshots/"+ fileName;
        console.log(newPath);

        return new Promise((resolve, reject) => {
            // fs.rename moves the file to the existing directory 'new/path/to'
            // and renames the image to 'screenshot.png'
            fs.rename(details.path, newPath, (err) => {
                if (err) return reject(err)

                // because we renamed and moved the image, resolve with the new path
                // so it is accurate in the test results
                resolve({ path: newPath })
            })
        })
    })
}

Что меня смущает, так это то, что в журналах выполнения мои console.logs видны до журналов самого теста:

...
  Running:  examples\actions.spec.js                                                       (1 of 19)


  Actions
{
  size: 148523,
  takenAt: '2020-03-16T08:55:09.929Z',
  dimensions: { width: 1280, height: 720 },
  multipart: false,
  specName: 'examples\\actions.spec.js',
  testFailure: true,
  path: 'C:\\Projekte\\playground\\cypress\\screenshots\\examples\\actions.spec.js\\Actions -- .type() - type into a DOM element (failed).png',
  scaled: true,
  blackout: [],
  duration: 342
}
2020-03-16T08.55:09.929Z.png
cypress/mochareports/screenshots/2020-03-16T08.55:09.929Z.png
    1) .type() - type into a DOM element
    √ .focus() - focus on a DOM element (326ms)
...

Если журналы консоли не происходят после выполнения теста , как я добавляю функцию к событию after: screenshot?

1 Ответ

0 голосов
/ 17 марта 2020

Проблема в коде javascript.

const fileName = details.takenAt.replace(":",".") +".png"

Ошибка, поскольку заменено только первое двоеточие, а оставшееся осталось. Поскольку двоеточие не допускается в именах файлов, переименование не удалось.

const fileName = details.takenAt.replace("/:/g",".") +".png"

Это фактически заменило все двоеточия и работает просто отлично.

Кроме того, задание имени спецификации как имени файла не удалось, поскольку имя спецификации будет иметь схему "example / action.spe c. js". Это терпит неудачу, потому что пример каталога не существует в cypress / mochareports / screenshots /. Для решения этой проблемы необходимо либо создать каталог, либо изменить желаемое имя файла на строку без косой черты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...