Я хочу включить запуск только одного теста, чтобы мне не приходилось ждать, пока другие тесты увидят результат одного теста.
В настоящее время я комментирую другие свои тесты, но это действительно раздражает.
Есть ли способ включить только один тест в Cypress?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


cypress run --spec path/to/file.spec.js
или используя шаблоны глобуса:
cypress run --spec 'path/to/files/*.spec.js'
Note: you need to wrap your glob patterns in single quotes to avoid shell expansion!
Вы можете использовать .only, как описано в документы Кипарис.
it.only('only run this one', () => {
// similarly use it.skip(...) to skip a test
})
it('not this one', () => {
})
Также вы можете сделать то же самое с блоками describe и context.
есть также приятное расширение VSCode, упрощающее добавление/удаление .only с помощью сочетаний клавиш. Он называется Test Utils (устанавливается с помощью ext install chrisbreiding.test-utils). Он работает с js, кофе и машинописным текстом:
Стоит отметить, что .only() можно добавить к нескольким тестам, и только эти тесты будут выполняться. Таким образом, вы можете использовать это для запуска более чем одного теста. ?
Есть несколько способов добиться этого.
.onlyк it или describe см. ответ @bkuceranpx cypress run --record --spec "cypress/integration/my-spec.js" npm run cypress -- --record --spec "cypress/integration/my-spec.js"
Включение примера CLI сделало этот ответ наиболее полным и полезным для меня.
Я нашел один способ пропустить тесты, которые мне не нужно запускать (в текущем тесте), и это использовать: this.skip();
it('test page', function () {
// skip this test for now
this.skip();
cy.visit('http://example.com/')
cy.contains('test page').click()
cy.url()
.should('include', '/test-page/')
})
1. важно использовать обычную функцию в качестве второго аргумента, это не будет доступно в стрелочной функции
2. Весь тест будет пропущен независимо от того, где мы напишем this.skip()
Вы можете запустить тест следующим образом.
кипарис запустить --spec **/file.js
Вы можете отключить ненужные наборы тестов и отдельные случаи, добавив x перед вызовом методов testrunner (describe, it и т. д.)
Так это будет выглядеть так:
// this whole testsuite will be muted
xdescribe('Visit google', () => {
it('should visit google', () => { cy.visit('https://google.com/'); });
});
// this testsuite will run
describe('Visit youtube', () => {
it('should visit youtube', () => { cy.visit('https://youtube.com/'); });
// this testcase will be muted
xit('is not necessary', () => { ... });
});
Чтобы запустить определенный файл через Терминал:
npx cypress run --record --spec "cypress/integration/my-spec.js"
npm run cypress -- --record --spec "cypress/integration/my-spec.js"
Вы можете использовать это
cypress run -- --spec 'path/to/files/*.spec.js'
или
npm run --spec 'path/to/files/*.spec.js'
Это сработало для меня.
Большое спасибо
Мои тестовые файлы имеют такую структуру path/something.test.jsx и команды npx cypress run --spec path/something.test.jsx дают следующее исключение в терминале:
Can't run because no spec files were found.
We searched for any files matching this glob pattern:
...
Удивительно, но следующее работает и запускает тест только для одного файла (при условии, что у вас установлен jest):
jest path/something.test.jsx
используйте ключевое слово @focus в тестовых сценариях при выполнении с использованием cypress open
Лучший способ сделать такие прогоны — использовать ключевое слово .Только, которое предоставляет кипарис.
Чтобы запустить все тестовые случаи в одной функции описания из множества функций описания, добавьте .only в необходимое описание.
describe("1st describe", () => {
it("Should check xx", async function(){
});
it("Should check yy", async function(){
});
});
describe.only("2nd describe", () => {
it("Should check xx", async function(){
});
it("Should check yy", async function(){
});
});
describe("3rd describe", () => {
it("Should check xx", async function(){
});
it("Should check yy", async function(){
});
});
Так вот только 2-е описание будет работать.
Точно так же, если вы хотите запустить несколько тестовых случаев в описании 1, добавьте .only перед всеми тестовыми примерами, которые вы хотите запустить.
describe("describe statement", () => {
it("Should check xx", async function(){
});
it.only("Should check yy", async function(){
});
it.only("Should check zz", async function(){
});
});
Так вот это для yy и zz будет работать
Это похоже на подгонка и описание в карме и жасмин, с которым вы, возможно, знакомы.
Вы можете пропустить тест в кипарисе с это.пропустить или выйти
Возможный дубликат В Cypress.io есть возможность контролировать запуск теста?