This plugin helps to parse tags to add them into Mocha Test object, so you can access tags within hooks and within a test.
Example:
it('test with tags @test', { tags: ['@abc'] }, function () {
// this.test?.tags object has all tags
expect(this.test?.tags).to.deep.eq([
{ tag: '@abc', info: [] },
{ tag: '@test', info: [] },
]);
});
-
install with npm:
npm i -D @mmisty/cypress-tags
or with yarn:
yarn add @mmisty/cypress-tags -D
-
configure project:
Put into your support.ts (or e2e.ts) file
import '@mmisty/cypress-tags'
-
That's it! Types should be added automatically if you use typescript.
There are several ways to add tags:
- inline tags - just add them into test or suite title (ex
@simple
,@tag("info")
)
it('test with tags @simple @tag("withInfo")', function () {
// ...
});
- cypress configuration object:
it('test with tags', { tags: ['@abc'] }, function () {
// ...
});
- cypress configuration object may also have a string type and also parsed tag type:
it('test with tags', { tags: '@abc' }, function () {
// ...
});
it('test with tags', { tags: [{ tag: '@abc', info: ['my info'] }] }, function () {
// ...
});
When tags are added to a test you can use them within hooks. This may be helpful when you want to do some action depending on tags:
Example (will skip tests with @skip
tag):
// my.test.ts
it('test to skip @skip', function () {
// ...
});
// e2e.ts / setup.ts
beforeEach(function() {
const test = this.currentTest;
if(test){
if(test.tags?.map(t => t.tag).includes('@skip')){
this.skip();
}
}
})
To see tags in test / suite title set env variable cyTagsShowTagsInTitle
to true
If you want to keep titles as they are set variable to undefined
- [ ] todo: when var is
true
show only own tags