collab/mermaid/cypress/integration/rendering/mindmap.spec.tsblame
View source
6dd74de1import { imgSnapshotTest } from '../../helpers/util.ts';
6dd74de2
6dd74de3/**
6dd74de4 * Check whether the SVG Element has a Mindmap root
6dd74de5 *
6dd74de6 * Sometimes, Cypress takes a snapshot before the mermaid mindmap has finished
6dd74de7 * generating the SVG.
6dd74de8 *
6dd74de9 * @param $p - The element to check.
6dd74de10 */
6dd74de11function shouldHaveRoot($p: JQuery<SVGSVGElement>) {
6dd74de12 // get HTML Element from jquery element
6dd74de13 const svgElement = $p[0];
6dd74de14 expect(svgElement.nodeName).equal('svg');
6dd74de15
6dd74de16 const sectionRoots = svgElement.getElementsByClassName('mindmap-node section-root');
6dd74de17 // mindmap should have at least one root section
6dd74de18 expect(sectionRoots).to.have.lengthOf.at.least(1);
6dd74de19}
6dd74de20
6dd74de21describe('Mindmaps', () => {
6dd74de22 it('Only a root', () => {
6dd74de23 imgSnapshotTest(
6dd74de24 `mindmap
6dd74de25root
6dd74de26 `,
6dd74de27 {},
6dd74de28 undefined,
6dd74de29 shouldHaveRoot
6dd74de30 );
6dd74de31 });
6dd74de32
6dd74de33 it('a root with a shape', () => {
6dd74de34 imgSnapshotTest(
6dd74de35 `mindmap
6dd74de36root[root]
6dd74de37 `,
6dd74de38 {},
6dd74de39 undefined,
6dd74de40 shouldHaveRoot
6dd74de41 );
6dd74de42 });
6dd74de43
6dd74de44 it('a root with wrapping text and a shape', () => {
6dd74de45 imgSnapshotTest(
6dd74de46 `mindmap
6dd74de47root[A root with a long text that wraps to keep the node size in check]
6dd74de48 `,
6dd74de49 {},
6dd74de50 undefined,
6dd74de51 shouldHaveRoot
6dd74de52 );
6dd74de53 });
6dd74de54
6dd74de55 it('a root with wrapping text and long words that exceed width', () => {
6dd74de56 imgSnapshotTest(
6dd74de57 `mindmap
6dd74de58root[A few smaller words but then averylongsetofcharacterswithoutwhitespacetoseparate that we expect to wrapontonextlinesandnotexceedwidthparameters]
6dd74de59 `,
6dd74de60 {},
6dd74de61 undefined,
6dd74de62 shouldHaveRoot
6dd74de63 );
6dd74de64 });
6dd74de65
6dd74de66 it('a root with an icon', () => {
6dd74de67 imgSnapshotTest(
6dd74de68 `mindmap
6dd74de69root[root]
6dd74de70::icon(mdi mdi-fire)
6dd74de71 `,
6dd74de72 {},
6dd74de73 undefined,
6dd74de74 shouldHaveRoot
6dd74de75 );
6dd74de76 });
6dd74de77
6dd74de78 it('Blang and cloud shape', () => {
6dd74de79 imgSnapshotTest(
6dd74de80 `mindmap
6dd74de81root))bang((
6dd74de82 ::icon(mdi mdi-fire)
6dd74de83 a))Another bang((
6dd74de84 ::icon(mdi mdi-fire)
6dd74de85 a)A cloud(
6dd74de86 ::icon(mdi mdi-fire)
6dd74de87 `,
6dd74de88 {},
6dd74de89 undefined,
6dd74de90 shouldHaveRoot
6dd74de91 );
6dd74de92 });
6dd74de93
6dd74de94 it('Blang and cloud shape with icons', () => {
6dd74de95 imgSnapshotTest(
6dd74de96 `mindmap
6dd74de97root))bang((
6dd74de98
6dd74de99 a))Another bang((
6dd74de100 a)A cloud(
6dd74de101 `,
6dd74de102 {},
6dd74de103 undefined,
6dd74de104 shouldHaveRoot
6dd74de105 );
6dd74de106 });
6dd74de107
6dd74de108 it('braches', () => {
6dd74de109 imgSnapshotTest(
6dd74de110 `mindmap
6dd74de111root
6dd74de112 child1
6dd74de113 grandchild 1
6dd74de114 grandchild 2
6dd74de115 child2
6dd74de116 grandchild 3
6dd74de117 grandchild 4
6dd74de118 child3
6dd74de119 grandchild 5
6dd74de120 grandchild 6
6dd74de121 `,
6dd74de122 {},
6dd74de123 undefined,
6dd74de124 shouldHaveRoot
6dd74de125 );
6dd74de126 });
6dd74de127
6dd74de128 it('braches with shapes and labels', () => {
6dd74de129 imgSnapshotTest(
6dd74de130 `mindmap
6dd74de131root
6dd74de132 child1((Circle))
6dd74de133 grandchild 1
6dd74de134 grandchild 2
6dd74de135 child2(Round rectangle)
6dd74de136 grandchild 3
6dd74de137 grandchild 4
6dd74de138 child3[Square]
6dd74de139 grandchild 5
6dd74de140 ::icon(mdi mdi-fire)
6dd74de141 gc6((grand<br/>child 6))
6dd74de142 ::icon(mdi mdi-fire)
6dd74de143 `,
6dd74de144 {},
6dd74de145 undefined,
6dd74de146 shouldHaveRoot
6dd74de147 );
6dd74de148 });
6dd74de149 it('text should wrap with icon', () => {
6dd74de150 imgSnapshotTest(
6dd74de151 `mindmap
6dd74de152root
6dd74de153 Child3(A node with an icon and with a long text that wraps to keep the node size in check)
6dd74de154 `,
6dd74de155 {},
6dd74de156 undefined,
6dd74de157 shouldHaveRoot
6dd74de158 );
6dd74de159 });
6dd74de160 it('square shape', () => {
6dd74de161 imgSnapshotTest(
6dd74de162 `mindmap
6dd74de163 root[
6dd74de164 The root
6dd74de165 ]`,
6dd74de166 {},
6dd74de167 undefined,
6dd74de168 shouldHaveRoot
6dd74de169 );
6dd74de170 });
6dd74de171 it('rounded rect shape', () => {
6dd74de172 imgSnapshotTest(
6dd74de173 `mindmap
6dd74de174 root((
6dd74de175 The root
6dd74de176 ))`,
6dd74de177 {},
6dd74de178 undefined,
6dd74de179 shouldHaveRoot
6dd74de180 );
6dd74de181 });
6dd74de182 it('circle shape', () => {
6dd74de183 imgSnapshotTest(
6dd74de184 `mindmap
6dd74de185 root(
6dd74de186 The root
6dd74de187 )`,
6dd74de188 {},
6dd74de189 undefined,
6dd74de190 shouldHaveRoot
6dd74de191 );
6dd74de192 });
6dd74de193 it('default shape', () => {
6dd74de194 imgSnapshotTest(
6dd74de195 `mindmap
6dd74de196 The root`,
6dd74de197 {},
6dd74de198 undefined,
6dd74de199 shouldHaveRoot
6dd74de200 );
6dd74de201 });
6dd74de202 it('adding children', () => {
6dd74de203 imgSnapshotTest(
6dd74de204 `mindmap
6dd74de205 The root
6dd74de206 child1
6dd74de207 child2`,
6dd74de208 {},
6dd74de209 undefined,
6dd74de210 shouldHaveRoot
6dd74de211 );
6dd74de212 });
6dd74de213 it('adding grand children', () => {
6dd74de214 imgSnapshotTest(
6dd74de215 `mindmap
6dd74de216 The root
6dd74de217 child1
6dd74de218 child2
6dd74de219 child3`,
6dd74de220 {},
6dd74de221 undefined,
6dd74de222 shouldHaveRoot
6dd74de223 );
6dd74de224 });
6dd74de225 describe('Markdown strings mindmaps (#4220)', () => {
6dd74de226 it('Formatted label with linebreak and a wrapping label and emojis', () => {
6dd74de227 imgSnapshotTest(
6dd74de228 `mindmap
6dd74de229 id1[\`**Start** with
6dd74de230 a second line 😎\`]
6dd74de231 id2[\`The dog in **the** hog... a *very long text* about it Word!\`]`
6dd74de232 );
6dd74de233 });
6dd74de234 });
6dd74de235 describe('Include char sequence "graph" in text (#6795)', () => {
6dd74de236 it('has a label with char sequence "graph"', () => {
6dd74de237 imgSnapshotTest(
6dd74de238 ` mindmap
6dd74de239 root
6dd74de240 Photograph
6dd74de241 Waterfall
6dd74de242 Landscape
6dd74de243 Geography
6dd74de244 Mountains
6dd74de245 Rocks`,
6dd74de246 { flowchart: { defaultRenderer: 'elk' } }
6dd74de247 );
6dd74de248 });
6dd74de249 });
6dd74de250 describe('Level 2 nodes exceeding 11', () => {
6dd74de251 it('should render all Level 2 nodes correctly when there are more than 11', () => {
6dd74de252 imgSnapshotTest(
6dd74de253 `mindmap
6dd74de254root
6dd74de255 Node1
6dd74de256 Node2
6dd74de257 Node3
6dd74de258 Node4
6dd74de259 Node5
6dd74de260 Node6
6dd74de261 Node7
6dd74de262 Node8
6dd74de263 Node9
6dd74de264 Node10
6dd74de265 Node11
6dd74de266 Node12
6dd74de267 Node13
6dd74de268 Node14
6dd74de269 Node15`,
6dd74de270 {},
6dd74de271 undefined,
6dd74de272 shouldHaveRoot
6dd74de273 );
6dd74de274 });
6dd74de275 });
6dd74de276 /* The end */
6dd74de277});