collab/mermaid/cypress/integration/rendering/newShapes.spec.tsblame
View source
6dd74de1import { imgSnapshotTest } from '../../helpers/util.ts';
6dd74de2
6dd74de3const looks = ['classic', 'handDrawn'] as const;
6dd74de4const directions = [
6dd74de5 'TB',
6dd74de6 //'BT',
6dd74de7 'LR',
6dd74de8 //'RL'
6dd74de9] as const;
6dd74de10const newShapesSet1 = [
6dd74de11 'triangle',
6dd74de12 'sloped-rectangle',
6dd74de13 'horizontal-cylinder',
6dd74de14 'flipped-triangle',
6dd74de15 'hourglass',
6dd74de16] as const;
6dd74de17const newShapesSet2 = [
6dd74de18 'tagged-rectangle',
6dd74de19 'documents',
6dd74de20 'lightning-bolt',
6dd74de21 'filled-circle',
6dd74de22 'window-pane',
6dd74de23] as const;
6dd74de24
6dd74de25const newShapesSet3 = [
6dd74de26 'curved-trapezoid',
6dd74de27 'bow-rect',
6dd74de28 'tagged-document',
6dd74de29 'divided-rectangle',
6dd74de30 'crossed-circle',
6dd74de31] as const;
6dd74de32
6dd74de33const newShapesSet4 = [
6dd74de34 'document',
6dd74de35 'notched-pentagon',
6dd74de36 'lined-cylinder',
6dd74de37 'stacked-document',
6dd74de38 'half-rounded-rectangle',
6dd74de39] as const;
6dd74de40
6dd74de41const newShapesSet5 = [
6dd74de42 'lined-document',
6dd74de43 'tagged-document',
6dd74de44 'brace-l',
6dd74de45 'comment',
6dd74de46 'braces',
6dd74de47 'brace-r',
6dd74de48] as const;
6dd74de49
6dd74de50const newShapesSet6 = ['brace-r', 'braces'] as const;
6dd74de51// Aggregate all shape sets into a single array
6dd74de52const newShapesSets = [
6dd74de53 newShapesSet1,
6dd74de54 newShapesSet2,
6dd74de55 newShapesSet3,
6dd74de56 newShapesSet4,
6dd74de57 newShapesSet5,
6dd74de58 newShapesSet6,
6dd74de59];
6dd74de60
6dd74de61looks.forEach((look) => {
6dd74de62 directions.forEach((direction) => {
6dd74de63 newShapesSets.forEach((newShapesSet) => {
6dd74de64 describe(`Test ${newShapesSet.join(', ')} in ${look} look and dir ${direction}`, () => {
6dd74de65 it(`without label`, () => {
6dd74de66 let flowchartCode = `flowchart ${direction}\n`;
6dd74de67 newShapesSet.forEach((newShape, index) => {
6dd74de68 flowchartCode += ` n${index} --> n${index}${index}@{ shape: ${newShape} }\n`;
6dd74de69 });
6dd74de70 imgSnapshotTest(flowchartCode, { look });
6dd74de71 });
6dd74de72
6dd74de73 it(`with label`, () => {
6dd74de74 let flowchartCode = `flowchart ${direction}\n`;
6dd74de75 newShapesSet.forEach((newShape, index) => {
6dd74de76 flowchartCode += ` n${index} --> n${index}${index}@{ shape: ${newShape}, label: 'This is a label for ${newShape} shape' }\n`;
6dd74de77 });
6dd74de78 imgSnapshotTest(flowchartCode, { look });
6dd74de79 });
6dd74de80
6dd74de81 it(`connect all shapes with each other`, () => {
6dd74de82 let flowchartCode = `flowchart ${direction}\n`;
6dd74de83 newShapesSet.forEach((newShape, index) => {
6dd74de84 flowchartCode += ` n${index}${index}@{ shape: ${newShape}, label: 'This is a label for ${newShape} shape' }\n`;
6dd74de85 });
6dd74de86 for (let i = 0; i < newShapesSet.length; i++) {
6dd74de87 for (let j = i + 1; j < newShapesSet.length; j++) {
6dd74de88 flowchartCode += ` n${i}${i} --> n${j}${j}\n`;
6dd74de89 }
6dd74de90 }
6dd74de91 if (!(direction === 'TB' && look === 'handDrawn' && newShapesSet === newShapesSet1)) {
6dd74de92 //skip this test, works in real. Need to look
6dd74de93 imgSnapshotTest(flowchartCode, { look });
6dd74de94 }
6dd74de95 });
6dd74de96
6dd74de97 it(`with very long label`, () => {
6dd74de98 let flowchartCode = `flowchart ${direction}\n`;
6dd74de99 newShapesSet.forEach((newShape, index) => {
6dd74de100 flowchartCode += ` n${index} --> n${index}${index}@{ shape: ${newShape}, label: 'This is a very very very very very long long long label for ${newShape} shape' }\n`;
6dd74de101 });
6dd74de102 imgSnapshotTest(flowchartCode, { look });
6dd74de103 });
6dd74de104
6dd74de105 it(`with markdown htmlLabels:true`, () => {
6dd74de106 let flowchartCode = `flowchart ${direction}\n`;
6dd74de107 newShapesSet.forEach((newShape, index) => {
6dd74de108 flowchartCode += ` n${index} --> n${index}${index}@{ shape: ${newShape}, label: 'This is **bold** </br>and <strong>strong</strong> for ${newShape} shape' }\n`;
6dd74de109 });
6dd74de110 imgSnapshotTest(flowchartCode, { look });
6dd74de111 });
6dd74de112
6dd74de113 it(`with markdown htmlLabels:false`, () => {
6dd74de114 let flowchartCode = `flowchart ${direction}\n`;
6dd74de115 newShapesSet.forEach((newShape, index) => {
6dd74de116 flowchartCode += ` n${index} --> n${index}${index}@{ shape: ${newShape}, label: 'This is **bold** </br>and <strong>strong</strong> for ${newShape} shape' }\n`;
6dd74de117 });
6dd74de118 imgSnapshotTest(flowchartCode, {
6dd74de119 look,
6dd74de120 htmlLabels: false,
6dd74de121 flowchart: { htmlLabels: false },
6dd74de122 });
6dd74de123 });
6dd74de124
6dd74de125 it(`with styles`, () => {
6dd74de126 let flowchartCode = `flowchart ${direction}\n`;
6dd74de127 newShapesSet.forEach((newShape, index) => {
6dd74de128 flowchartCode += ` n${index} --> n${index}${index}@{ shape: ${newShape}, label: 'new ${newShape} shape' }\n`;
6dd74de129 flowchartCode += ` style n${index}${index} fill:#f9f,stroke:#333,stroke-width:4px \n`;
6dd74de130 });
6dd74de131 imgSnapshotTest(flowchartCode, { look });
6dd74de132 });
6dd74de133
6dd74de134 it(`with classDef`, () => {
6dd74de135 let flowchartCode = `flowchart ${direction}\n`;
6dd74de136 flowchartCode += ` classDef customClazz fill:#bbf,stroke:#f66,stroke-width:2px,color:#fff,stroke-dasharray: 5 5\n`;
6dd74de137 newShapesSet.forEach((newShape, index) => {
6dd74de138 flowchartCode += ` n${index} --> n${index}${index}@{ shape: ${newShape}, label: 'new ${newShape} shape' }\n`;
6dd74de139 flowchartCode += ` n${index}${index}:::customClazz\n`;
6dd74de140 });
6dd74de141 imgSnapshotTest(flowchartCode, { look });
6dd74de142 });
6dd74de143 });
6dd74de144 });
6dd74de145 });
6dd74de146});