test(e2e): test for mindmap before snapshot

Sometimes, the mindmap e2e tests take a snapshot when the mindmap
SVG has been created, but hasn't yet been fully rendered.

This adds a quick check for a mindmap section root, so that the
snapshot is only taken after the mindmap diagram has started
rendering.

I was also running into JSDoc ESLint warnings, so I moved the file
into a TypeScript file to fix those warnings.
This commit is contained in:
Alois Klink
2022-11-18 01:14:17 +00:00
parent 57edcfe87d
commit 537a627b75
2 changed files with 71 additions and 15 deletions

View File

@@ -1,12 +1,32 @@
import { imgSnapshotTest, renderGraph } from '../../helpers/util.js'; import { imgSnapshotTest, renderGraph } from '../../helpers/util.js';
/**
* Check whether the SVG Element has a Mindmap root
*
* Sometimes, Cypress takes a snapshot before the mermaid mindmap has finished
* generating the SVG.
*
* @param $p - The element to check.
*/
function shouldHaveRoot($p: JQuery<SVGSVGElement>) {
// get HTML Element from jquery element
const svgElement = $p[0];
expect(svgElement.nodeName).equal('svg');
const sectionRoots = svgElement.getElementsByClassName('mindmap-node section-root');
// mindmap should have at least one root section
expect(sectionRoots).to.have.lengthOf.at.least(1);
}
describe('Mindmaps', () => { describe('Mindmaps', () => {
it('Only a root', () => { it('Only a root', () => {
imgSnapshotTest( imgSnapshotTest(
`mindmap `mindmap
root root
`, `,
{} {},
undefined,
shouldHaveRoot
); );
}); });
@@ -15,7 +35,9 @@ root
`mindmap `mindmap
root[root] root[root]
`, `,
{} {},
undefined,
shouldHaveRoot
); );
}); });
@@ -24,7 +46,9 @@ root[root]
`mindmap `mindmap
root[A root with a long text that wraps to keep the node size in check] root[A root with a long text that wraps to keep the node size in check]
`, `,
{} {},
undefined,
shouldHaveRoot
); );
}); });
@@ -34,7 +58,9 @@ root[A root with a long text that wraps to keep the node size in check]
root[root] root[root]
::icon(mdi mdi-fire) ::icon(mdi mdi-fire)
`, `,
{} {},
undefined,
shouldHaveRoot
); );
}); });
@@ -48,7 +74,9 @@ root))bang((
a)A cloud( a)A cloud(
::icon(mdi mdi-fire) ::icon(mdi mdi-fire)
`, `,
{} {},
undefined,
shouldHaveRoot
); );
}); });
@@ -60,7 +88,9 @@ root))bang((
a))Another bang(( a))Another bang((
a)A cloud( a)A cloud(
`, `,
{} {},
undefined,
shouldHaveRoot
); );
}); });
@@ -78,7 +108,9 @@ root
grandchild 5 grandchild 5
grandchild 6 grandchild 6
`, `,
{} {},
undefined,
shouldHaveRoot
); );
}); });
@@ -98,7 +130,9 @@ root
gc6((grand<br/>child 6)) gc6((grand<br/>child 6))
::icon(mdi mdi-fire) ::icon(mdi mdi-fire)
`, `,
{} {},
undefined,
shouldHaveRoot
); );
}); });
it('text shouhld wrap with icon', () => { it('text shouhld wrap with icon', () => {
@@ -107,7 +141,9 @@ root
root root
Child3(A node with an icon and with a long text that wraps to keep the node size in check) Child3(A node with an icon and with a long text that wraps to keep the node size in check)
`, `,
{} {},
undefined,
shouldHaveRoot
); );
}); });
it('square shape', () => { it('square shape', () => {
@@ -118,7 +154,9 @@ mindmap
The root The root
] ]
`, `,
{} {},
undefined,
shouldHaveRoot
); );
cy.get('svg'); cy.get('svg');
}); });
@@ -130,7 +168,9 @@ mindmap
The root The root
)) ))
`, `,
{} {},
undefined,
shouldHaveRoot
); );
cy.get('svg'); cy.get('svg');
}); });
@@ -142,7 +182,9 @@ mindmap
The root The root
) )
`, `,
{} {},
undefined,
shouldHaveRoot
); );
cy.get('svg'); cy.get('svg');
}); });
@@ -152,7 +194,9 @@ mindmap
mindmap mindmap
The root The root
`, `,
{} {},
undefined,
shouldHaveRoot
); );
cy.get('svg'); cy.get('svg');
}); });
@@ -164,7 +208,9 @@ mindmap
child1 child1
child2 child2
`, `,
{} {},
undefined,
shouldHaveRoot
); );
cy.get('svg'); cy.get('svg');
}); });
@@ -177,7 +223,9 @@ mindmap
child2 child2
child3 child3
`, `,
{} {},
undefined,
shouldHaveRoot
); );
cy.get('svg'); cy.get('svg');
}); });

8
cypress/tsconfig.json Normal file
View File

@@ -0,0 +1,8 @@
{
"compilerOptions": {
"target": "es2020",
"lib": ["es2020", "dom"],
"types": ["cypress", "node"]
},
"include": ["**/*.ts"]
}