Я хочу передавать / делиться данными между каждым тестом. Как лучше всего реализовать это в Cypress?
Например:
it('test 1'), () => {
cy.wrap('one').as('a')
const state1 = 'stat1'
})
it('test 2'), () => {
cy.wrap('two').as('b')
})
it('test 2'), () => {
//I want to access this.a and this.b
//Also I want to access state1
})





В случае переменных Javascript вы можете сделать что-то вроде этого:
let state;
describe('test 1', () => {
it('changes state', () => {
state = "hi";
});
});
describe('test 2', () => {
it('reports state', () => {
cy.log(state); // logs "hi" to the Cypress log panel
});
});
.as() не может передавать состояние между блоками describe.
Лучше использовать текущий контекст пакета: установите this.state, и вы можете пропустить необходимость «разрешить» (объявить) переменную в глобальной области видимости. Обратите внимание, что затем вы должны использовать function(){} вместо ()=>{}, чтобы назначить this.
Это не работает, если тесты Это переходят в разные домены.
Предполагая, что вы пытаетесь передать текст
it('test 1'), () => {
cy.wrap('one').as('a')
}
it('test 2'), () => {
cy.wrap({ valueName: 'two' }).as('b')
}
it('test 2'), () => {
//I want to access this.a and this.b
cy.get('@a').then((thisIsA) => {
cy.log(thisIsA);
// logs 'one'
}
cy.get('@b').its('valueName').then((thisIsB) => {
cy.log(thisIsB);
// logs 'two'
}
cy.get('@b').its('valueName').should('eq', 'two')
}
Не работает в cypress 3.6.1 github.com/cypress-io/cypress/issues/1392
Я пробовал некоторые из этих других решений, и они не работают для меня. Возможно, в последних версиях все изменилось. Следующий пример должен работать. Обратите внимание на использование функции () для обоих тестов, которая сохраняет контекст в контексте this.
it('get the value', function () {
cy.get('#MyElement').invoke('text').as('mytext1')
})
it('use the value', function () {
cy.log(this.mytext1);
})
Как указал abbr в комментариях, совместное использование значения с использованием глобальной переменной не будет работать, если тесты запускаются с другого URL-адреса.
Итак, они не работают:
describe / context или нет)Mochathis.state (это очищается после теста)CypressasОстается конечно файл. Читать и написать.
describe("Test", () => {
it("Can access 3000", function () {
cy.visit("http://localhost:3000");
cy.writeFile("shared.json", {count: 2})
});
it("Can access 8000", function () {
cy.visit("http://localhost:8000");
cy.readFile("shared.json").then(cy.log)
});
});
Тесты не должны разделять состояние - каков контекст, как вы думаете, зачем вам это нужно?