I am looking at a problem where i need to parse typescript file for nested describe and test info, i am using jest-editor-support for the same but nested describe is not parsed as expected. code format is below. I also added actual output and expected output, any existing parser to achieve this?
describe('describe 1', () => {
describe('describe 1.1 ', () => {
test(`test 1`, async () => {
expect(console.log('Printing logs'));
});
});
});
describe('describe 2', () => {
describe('describe 2.1 ', () => {
test(`test 2`, async () => {
expect(console.log('Printing logs'));
});
});
});
Jest editor output is. -
describeBlocks: [
DescribeBlock {
type: 'describe',
name: 'describe 1'
},
DescribeBlock {
type: 'describe',
name: 'describe 1.1 '
},
DescribeBlock {
type: 'describe',
name: 'describe 2'
},
DescribeBlock {
type: 'describe',
name: 'describe 2.1 '
}
],
itBlocks: [
ItBlock {
type: 'it',
name: 'test 1'
},
ItBlock {
type: 'it',
name: 'test 2'
}
]
expected output is
describeBlocks: [
DescribeBlock {
type: 'describe',
name: 'describe 1',
describeBlocks: [
DescribeBlock {
type: 'describe',
name: 'describe 1.1 '
itBlocks: [
ItBlock {
type: 'it',
name: 'test 1'
}
]
}]
},
DescribeBlock {
type: 'describe',
name: 'describe 2',
describeBlocks: [
DescribeBlock {
type: 'describe',
name: 'describe 2.1 '
itBlocks: [
ItBlock {
type: 'it',
name: 'test 2'
}
]
}]
}
]
parsed_info = js.parse(file); and then traverse each child using - parsed_info.root['children'].length
I had to use DFT(depth first traversal) to get the name of describe and test name.