collab/mermaid/cypress/integration/rendering/flowchart-handDrawn.spec.jsblame
View source
6dd74de1import { imgSnapshotTest, renderGraph } from '../../helpers/util.ts';
6dd74de2
6dd74de3describe('Flowchart HandDrawn', () => {
6dd74de4 it('FHD1: should render a simple flowchart no htmlLabels', () => {
6dd74de5 imgSnapshotTest(
6dd74de6 `graph TD
6dd74de7 A[Christmas] -->|Get money| B(Go shopping)
6dd74de8 B --> C{Let me think}
6dd74de9 C -->|One| D[Laptop]
6dd74de10 C -->|Two| E[iPhone]
6dd74de11 C -->|Three| F[fa:fa-car Car]
6dd74de12 `,
6dd74de13 {
6dd74de14 look: 'handDrawn',
6dd74de15 flowchart: { htmlLabels: false },
6dd74de16 fontFamily: 'courier',
6dd74de17 }
6dd74de18 );
6dd74de19 });
6dd74de20
6dd74de21 it('FHD2: should render a simple flowchart with htmlLabels', () => {
6dd74de22 imgSnapshotTest(
6dd74de23 `graph TD
6dd74de24 A[Christmas] -->|Get money| B(Go shopping)
6dd74de25 B --> C{Let me think}
6dd74de26 C -->|One| D[Laptop]
6dd74de27 C -->|Two| E[iPhone]
6dd74de28 C -->|Three| F[fa:fa-car Car]
6dd74de29 `,
6dd74de30 {
6dd74de31 look: 'handDrawn',
6dd74de32 flowchart: { htmlLabels: true },
6dd74de33 fontFamily: 'courier',
6dd74de34 }
6dd74de35 );
6dd74de36 });
6dd74de37
6dd74de38 it('FHD3: should render a simple flowchart with line breaks', () => {
6dd74de39 imgSnapshotTest(
6dd74de40 `
6dd74de41 graph TD
6dd74de42 A[Christmas] -->|Get money| B(Go shopping)
6dd74de43 B --> C{Let me thinksssss<br/>ssssssssssssssssssssss<br/>sssssssssssssssssssssssssss}
6dd74de44 C -->|One| D[Laptop]
6dd74de45 C -->|Two| E[iPhone]
6dd74de46 C -->|Three| F[Car]
6dd74de47 `,
6dd74de48 { look: 'handDrawn', fontFamily: 'courier' }
6dd74de49 );
6dd74de50 });
6dd74de51
6dd74de52 it('FHD4: should render a simple flowchart with trapezoid and inverse trapezoid vertex options.', () => {
6dd74de53 imgSnapshotTest(
6dd74de54 `
6dd74de55 graph TD
6dd74de56 A[/Christmas\\]
6dd74de57 A -->|Get money| B[\\Go shopping/]
6dd74de58 B --> C{Let me thinksssss<br/>ssssssssssssssssssssss<br/>sssssssssssssssssssssssssss}
6dd74de59 C -->|One| D[/Laptop/]
6dd74de60 C -->|Two| E[\\iPhone\\]
6dd74de61 C -->|Three| F[Car]
6dd74de62 `,
6dd74de63 { look: 'handDrawn', fontFamily: 'courier' }
6dd74de64 );
6dd74de65 });
6dd74de66
6dd74de67 it('FHD5: should style nodes via a class.', () => {
6dd74de68 imgSnapshotTest(
6dd74de69 `
6dd74de70 graph TD
6dd74de71 1A --> 1B
6dd74de72 1B --> 1C
6dd74de73 1C --> D
6dd74de74 1C --> E
6dd74de75
6dd74de76 classDef processHead fill:#888888,color:white,font-weight:bold,stroke-width:3px,stroke:#001f3f
6dd74de77 class 1A,1B,D,E processHead
6dd74de78 `,
6dd74de79 { look: 'handDrawn', fontFamily: 'courier' }
6dd74de80 );
6dd74de81 });
6dd74de82
6dd74de83 it('FHD6: should render a flowchart full of circles', () => {
6dd74de84 imgSnapshotTest(
6dd74de85 `
6dd74de86 graph LR
6dd74de87 47(SAM.CommonFA.FMESummary)-->48(SAM.CommonFA.CommonFAFinanceBudget)
6dd74de88 37(SAM.CommonFA.BudgetSubserviceLineVolume)-->48(SAM.CommonFA.CommonFAFinanceBudget)
6dd74de89 35(SAM.CommonFA.PopulationFME)-->47(SAM.CommonFA.FMESummary)
6dd74de90 41(SAM.CommonFA.MetricCost)-->47(SAM.CommonFA.FMESummary)
6dd74de91 44(SAM.CommonFA.MetricOutliers)-->47(SAM.CommonFA.FMESummary)
6dd74de92 46(SAM.CommonFA.MetricOpportunity)-->47(SAM.CommonFA.FMESummary)
6dd74de93 40(SAM.CommonFA.OPVisits)-->47(SAM.CommonFA.FMESummary)
6dd74de94 38(SAM.CommonFA.CommonFAFinanceRefund)-->47(SAM.CommonFA.FMESummary)
6dd74de95 43(SAM.CommonFA.CommonFAFinancePicuDays)-->47(SAM.CommonFA.FMESummary)
6dd74de96 42(SAM.CommonFA.CommonFAFinanceNurseryDays)-->47(SAM.CommonFA.FMESummary)
6dd74de97 45(SAM.CommonFA.MetricPreOpportunity)-->46(SAM.CommonFA.MetricOpportunity)
6dd74de98 35(SAM.CommonFA.PopulationFME)-->45(SAM.CommonFA.MetricPreOpportunity)
6dd74de99 41(SAM.CommonFA.MetricCost)-->45(SAM.CommonFA.MetricPreOpportunity)
6dd74de100 41(SAM.CommonFA.MetricCost)-->44(SAM.CommonFA.MetricOutliers)
6dd74de101 39(SAM.CommonFA.ChargeDetails)-->43(SAM.CommonFA.CommonFAFinancePicuDays)
6dd74de102 39(SAM.CommonFA.ChargeDetails)-->42(SAM.CommonFA.CommonFAFinanceNurseryDays)
6dd74de103 39(SAM.CommonFA.ChargeDetails)-->41(SAM.CommonFA.MetricCost)
6dd74de104 39(SAM.CommonFA.ChargeDetails)-->40(SAM.CommonFA.OPVisits)
6dd74de105 35(SAM.CommonFA.PopulationFME)-->39(SAM.CommonFA.ChargeDetails)
6dd74de106 36(SAM.CommonFA.PremetricCost)-->39(SAM.CommonFA.ChargeDetails)
6dd74de107 `,
6dd74de108 { look: 'handDrawn', fontFamily: 'courier' }
6dd74de109 );
6dd74de110 });
6dd74de111
6dd74de112 it('FHD7: should render a flowchart full of icons', () => {
6dd74de113 imgSnapshotTest(
6dd74de114 `
6dd74de115 graph TD
6dd74de116 9e122290_1ec3_e711_8c5a_005056ad0002("fa:fa-creative-commons My System | Test Environment")
6dd74de117 82072290_1ec3_e711_8c5a_005056ad0002("fa:fa-cogs Shared Business Logic Server:Service 1")
6dd74de118 db052290_1ec3_e711_8c5a_005056ad0002("fa:fa-cogs Shared Business Logic Server:Service 2")
6dd74de119 4e112290_1ec3_e711_8c5a_005056ad0002("fa:fa-cogs Shared Report Server:Service 1")
6dd74de120 30122290_1ec3_e711_8c5a_005056ad0002("fa:fa-cogs Shared Report Server:Service 2")
6dd74de121 5e112290_1ec3_e711_8c5a_005056ad0002("fa:fa-cogs Dedicated Test Business Logic Server:Service 1")
6dd74de122 c1112290_1ec3_e711_8c5a_005056ad0002("fa:fa-cogs Dedicated Test Business Logic Server:Service 2")
6dd74de123 b7042290_1ec3_e711_8c5a_005056ad0002("fa:fa-circle [DBServer\\SharedDbInstance].[SupportDb]")
6dd74de124 8f102290_1ec3_e711_8c5a_005056ad0002("fa:fa-circle [DBServer\\SharedDbInstance].[DevelopmentDb]")
6dd74de125 0e102290_1ec3_e711_8c5a_005056ad0002("fa:fa-circle [DBServer\\SharedDbInstance].[TestDb]")
6dd74de126 07132290_1ec3_e711_8c5a_005056ad0002("fa:fa-circle [DBServer\\SharedDbInstance].[SharedReportingDb]")
6dd74de127 c7072290_1ec3_e711_8c5a_005056ad0002("fa:fa-server Shared Business Logic Server")
6dd74de128 ca122290_1ec3_e711_8c5a_005056ad0002("fa:fa-server Shared Report Server")
6dd74de129 68102290_1ec3_e711_8c5a_005056ad0002("fa:fa-server Dedicated Test Business Logic Server")
6dd74de130 f4112290_1ec3_e711_8c5a_005056ad0002("fa:fa-database [DBServer\\SharedDbInstance]")
6dd74de131 d6072290_1ec3_e711_8c5a_005056ad0002("fa:fa-server DBServer")
6dd74de132 71082290_1ec3_e711_8c5a_005056ad0002("fa:fa-cogs DBServer\\:MSSQLSERVER")
6dd74de133 c0102290_1ec3_e711_8c5a_005056ad0002("fa:fa-cogs DBServer\\:SQLAgent")
6dd74de134 9a072290_1ec3_e711_8c5a_005056ad0002("fa:fa-cogs DBServer\\:SQLBrowser")
6dd74de135 1d0a2290_1ec3_e711_8c5a_005056ad0002("fa:fa-server VmHost1")
6dd74de136 200a2290_1ec3_e711_8c5a_005056ad0002("fa:fa-server VmHost2")
6dd74de137 1c0a2290_1ec3_e711_8c5a_005056ad0002("fa:fa-server VmHost3")
6dd74de138 9e122290_1ec3_e711_8c5a_005056ad0002-->82072290_1ec3_e711_8c5a_005056ad0002
6dd74de139 9e122290_1ec3_e711_8c5a_005056ad0002-->db052290_1ec3_e711_8c5a_005056ad0002
6dd74de140 9e122290_1ec3_e711_8c5a_005056ad0002-->4e112290_1ec3_e711_8c5a_005056ad0002
6dd74de141 9e122290_1ec3_e711_8c5a_005056ad0002-->30122290_1ec3_e711_8c5a_005056ad0002
6dd74de142 9e122290_1ec3_e711_8c5a_005056ad0002-->5e112290_1ec3_e711_8c5a_005056ad0002
6dd74de143 9e122290_1ec3_e711_8c5a_005056ad0002-->c1112290_1ec3_e711_8c5a_005056ad0002
6dd74de144 82072290_1ec3_e711_8c5a_005056ad0002-->b7042290_1ec3_e711_8c5a_005056ad0002
6dd74de145 82072290_1ec3_e711_8c5a_005056ad0002-->8f102290_1ec3_e711_8c5a_005056ad0002
6dd74de146 82072290_1ec3_e711_8c5a_005056ad0002-->0e102290_1ec3_e711_8c5a_005056ad0002
6dd74de147 82072290_1ec3_e711_8c5a_005056ad0002-->c7072290_1ec3_e711_8c5a_005056ad0002
6dd74de148 db052290_1ec3_e711_8c5a_005056ad0002-->c7072290_1ec3_e711_8c5a_005056ad0002
6dd74de149 db052290_1ec3_e711_8c5a_005056ad0002-->82072290_1ec3_e711_8c5a_005056ad0002
6dd74de150 4e112290_1ec3_e711_8c5a_005056ad0002-->b7042290_1ec3_e711_8c5a_005056ad0002
6dd74de151 4e112290_1ec3_e711_8c5a_005056ad0002-->8f102290_1ec3_e711_8c5a_005056ad0002
6dd74de152 4e112290_1ec3_e711_8c5a_005056ad0002-->0e102290_1ec3_e711_8c5a_005056ad0002
6dd74de153 4e112290_1ec3_e711_8c5a_005056ad0002-->07132290_1ec3_e711_8c5a_005056ad0002
6dd74de154 4e112290_1ec3_e711_8c5a_005056ad0002-->ca122290_1ec3_e711_8c5a_005056ad0002
6dd74de155 30122290_1ec3_e711_8c5a_005056ad0002-->ca122290_1ec3_e711_8c5a_005056ad0002
6dd74de156 30122290_1ec3_e711_8c5a_005056ad0002-->4e112290_1ec3_e711_8c5a_005056ad0002
6dd74de157 5e112290_1ec3_e711_8c5a_005056ad0002-->8f102290_1ec3_e711_8c5a_005056ad0002
6dd74de158 5e112290_1ec3_e711_8c5a_005056ad0002-->68102290_1ec3_e711_8c5a_005056ad0002
6dd74de159 c1112290_1ec3_e711_8c5a_005056ad0002-->68102290_1ec3_e711_8c5a_005056ad0002
6dd74de160 c1112290_1ec3_e711_8c5a_005056ad0002-->5e112290_1ec3_e711_8c5a_005056ad0002
6dd74de161 b7042290_1ec3_e711_8c5a_005056ad0002-->f4112290_1ec3_e711_8c5a_005056ad0002
6dd74de162 8f102290_1ec3_e711_8c5a_005056ad0002-->f4112290_1ec3_e711_8c5a_005056ad0002
6dd74de163 0e102290_1ec3_e711_8c5a_005056ad0002-->f4112290_1ec3_e711_8c5a_005056ad0002
6dd74de164 07132290_1ec3_e711_8c5a_005056ad0002-->f4112290_1ec3_e711_8c5a_005056ad0002
6dd74de165 c7072290_1ec3_e711_8c5a_005056ad0002-->1d0a2290_1ec3_e711_8c5a_005056ad0002
6dd74de166 ca122290_1ec3_e711_8c5a_005056ad0002-->200a2290_1ec3_e711_8c5a_005056ad0002
6dd74de167 68102290_1ec3_e711_8c5a_005056ad0002-->1c0a2290_1ec3_e711_8c5a_005056ad0002
6dd74de168 f4112290_1ec3_e711_8c5a_005056ad0002-->d6072290_1ec3_e711_8c5a_005056ad0002
6dd74de169 f4112290_1ec3_e711_8c5a_005056ad0002-->71082290_1ec3_e711_8c5a_005056ad0002
6dd74de170 f4112290_1ec3_e711_8c5a_005056ad0002-->c0102290_1ec3_e711_8c5a_005056ad0002
6dd74de171 f4112290_1ec3_e711_8c5a_005056ad0002-->9a072290_1ec3_e711_8c5a_005056ad0002
6dd74de172 d6072290_1ec3_e711_8c5a_005056ad0002-->1c0a2290_1ec3_e711_8c5a_005056ad0002
6dd74de173 71082290_1ec3_e711_8c5a_005056ad0002-->d6072290_1ec3_e711_8c5a_005056ad0002
6dd74de174 c0102290_1ec3_e711_8c5a_005056ad0002-->d6072290_1ec3_e711_8c5a_005056ad0002
6dd74de175 c0102290_1ec3_e711_8c5a_005056ad0002-->71082290_1ec3_e711_8c5a_005056ad0002
6dd74de176 9a072290_1ec3_e711_8c5a_005056ad0002-->d6072290_1ec3_e711_8c5a_005056ad0002
6dd74de177 9a072290_1ec3_e711_8c5a_005056ad0002-->71082290_1ec3_e711_8c5a_005056ad0002
6dd74de178 `,
6dd74de179 { look: 'handDrawn', fontFamily: 'courier' }
6dd74de180 );
6dd74de181 });
6dd74de182
6dd74de183 it('FHD8: should render labels with numbers at the start', () => {
6dd74de184 imgSnapshotTest(
6dd74de185 `
6dd74de186 graph TB;subgraph "number as labels";1;end;
6dd74de187 `,
6dd74de188 { look: 'handDrawn', fontFamily: 'courier' }
6dd74de189 );
6dd74de190 });
6dd74de191
6dd74de192 it('FHD9: should render subgraphs', () => {
6dd74de193 imgSnapshotTest(
6dd74de194 `
6dd74de195 graph TB
6dd74de196 subgraph One
6dd74de197 a1-->a2
6dd74de198 end
6dd74de199 `,
6dd74de200 { look: 'handDrawn', fontFamily: 'courier' }
6dd74de201 );
6dd74de202 });
6dd74de203
6dd74de204 it('FHD10: should render subgraphs with a title starting with a digit', () => {
6dd74de205 imgSnapshotTest(
6dd74de206 `
6dd74de207 graph TB
6dd74de208 subgraph 2Two
6dd74de209 a1-->a2
6dd74de210 end
6dd74de211 `,
6dd74de212 { look: 'handDrawn', fontFamily: 'courier' }
6dd74de213 );
6dd74de214 });
6dd74de215
6dd74de216 it('FHD11: should render styled subgraphs', () => {
6dd74de217 imgSnapshotTest(
6dd74de218 `
6dd74de219 graph TB
6dd74de220 A
6dd74de221 B
6dd74de222 subgraph foo[Foo SubGraph]
6dd74de223 C
6dd74de224 D
6dd74de225 end
6dd74de226 subgraph bar[Bar SubGraph]
6dd74de227 E
6dd74de228 F
6dd74de229 end
6dd74de230 G
6dd74de231
6dd74de232 A-->B
6dd74de233 B-->C
6dd74de234 C-->D
6dd74de235 B-->D
6dd74de236 D-->E
6dd74de237 E-->A
6dd74de238 E-->F
6dd74de239 F-->D
6dd74de240 F-->G
6dd74de241 B-->G
6dd74de242 G-->D
6dd74de243
6dd74de244 style foo fill:#F99,stroke-width:2px,stroke:#F0F,color:darkred
6dd74de245 style bar fill:#999,stroke-width:10px,stroke:#0F0,color:blue
6dd74de246 `,
6dd74de247 { look: 'handDrawn', fontFamily: 'courier' }
6dd74de248 );
6dd74de249 });
6dd74de250
6dd74de251 it('FHD12: should render a flowchart with long names and class definitions', () => {
6dd74de252 imgSnapshotTest(
6dd74de253 `graph LR
6dd74de254 sid-B3655226-6C29-4D00-B685-3D5C734DC7E1["
6dd74de255
6dd74de256 提交申请
6dd74de257 熊大
6dd74de258 "];
6dd74de259 class sid-B3655226-6C29-4D00-B685-3D5C734DC7E1 node-executed;
6dd74de260 sid-4DA958A0-26D9-4D47-93A7-70F39FD7D51A["
6dd74de261 负责人审批
6dd74de262 强子
6dd74de263 "];
6dd74de264 class sid-4DA958A0-26D9-4D47-93A7-70F39FD7D51A node-executed;
6dd74de265 sid-E27C0367-E6D6-497F-9736-3CDC21FDE221["
6dd74de266 DBA审批
6dd74de267 强子
6dd74de268 "];
6dd74de269 class sid-E27C0367-E6D6-497F-9736-3CDC21FDE221 node-executed;
6dd74de270 sid-BED98281-9585-4D1B-934E-BD1AC6AC0EFD["
6dd74de271 SA审批
6dd74de272 阿美
6dd74de273 "];
6dd74de274 class sid-BED98281-9585-4D1B-934E-BD1AC6AC0EFD node-executed;
6dd74de275 sid-7CE72B24-E0C1-46D3-8132-8BA66BE05AA7["
6dd74de276 主管审批
6dd74de277 光头强
6dd74de278 "];
6dd74de279 class sid-7CE72B24-E0C1-46D3-8132-8BA66BE05AA7 node-executed;
6dd74de280 sid-A1B3CD96-7697-4D7C-BEAA-73D187B1BE89["
6dd74de281 DBA确认
6dd74de282 强子
6dd74de283 "];
6dd74de284 class sid-A1B3CD96-7697-4D7C-BEAA-73D187B1BE89 node-executed;
6dd74de285 sid-3E35A7FF-A2F4-4E07-9247-DBF884C81937["
6dd74de286 SA确认
6dd74de287 阿美
6dd74de288 "];
6dd74de289 class sid-3E35A7FF-A2F4-4E07-9247-DBF884C81937 node-executed;
6dd74de290 sid-4FC27B48-A6F9-460A-A675-021F5854FE22["
6dd74de291 结束
6dd74de292 "];
6dd74de293 class sid-4FC27B48-A6F9-460A-A675-021F5854FE22 node-executed;
6dd74de294 sid-19DD9E9F-98C1-44EE-B604-842AFEE76F1E["
6dd74de295 SA执行1
6dd74de296 强子
6dd74de297 "];
6dd74de298 class sid-19DD9E9F-98C1-44EE-B604-842AFEE76F1E node-executed;
6dd74de299 sid-6C2120F3-D940-4958-A067-0903DCE879C4["
6dd74de300 SA执行2
6dd74de301 强子
6dd74de302 "];
6dd74de303 class sid-6C2120F3-D940-4958-A067-0903DCE879C4 node-executed;
6dd74de304 sid-9180E2A0-5C4B-435F-B42F-0D152470A338["
6dd74de305 DBA执行1
6dd74de306 强子
6dd74de307 "];
6dd74de308 class sid-9180E2A0-5C4B-435F-B42F-0D152470A338 node-executed;
6dd74de309 sid-03A2C3AC-5337-48A5-B154-BB3FD0EC8DAD["
6dd74de310 DBA执行3
6dd74de311 强子
6dd74de312 "];
6dd74de313 class sid-03A2C3AC-5337-48A5-B154-BB3FD0EC8DAD node-executed;
6dd74de314 sid-D5E1F2F4-306C-47A2-BF74-F66E3D769756["
6dd74de315 DBA执行2
6dd74de316 强子
6dd74de317 "];
6dd74de318 class sid-D5E1F2F4-306C-47A2-BF74-F66E3D769756 node-executed;
6dd74de319 sid-8C3F2F1D-F014-4F99-B966-095DC1A2BD93["
6dd74de320 DBA执行4
6dd74de321 强子
6dd74de322 "];
6dd74de323 class sid-8C3F2F1D-F014-4F99-B966-095DC1A2BD93 node-executed;
6dd74de324 sid-1897B30A-9C5C-4D5B-B80B-76A038785070["
6dd74de325 负责人确认
6dd74de326 梁静茹
6dd74de327 "];
6dd74de328 class sid-1897B30A-9C5C-4D5B-B80B-76A038785070 node-executed;
6dd74de329 sid-B3655226-6C29-4D00-B685-3D5C734DC7E1-->sid-7CE72B24-E0C1-46D3-8132-8BA66BE05AA7;
6dd74de330 sid-4DA958A0-26D9-4D47-93A7-70F39FD7D51A-->sid-1897B30A-9C5C-4D5B-B80B-76A038785070;
6dd74de331 sid-E27C0367-E6D6-497F-9736-3CDC21FDE221-->sid-A1B3CD96-7697-4D7C-BEAA-73D187B1BE89;
6dd74de332 sid-BED98281-9585-4D1B-934E-BD1AC6AC0EFD-->sid-3E35A7FF-A2F4-4E07-9247-DBF884C81937;
6dd74de333 sid-19DD9E9F-98C1-44EE-B604-842AFEE76F1E-->sid-6C2120F3-D940-4958-A067-0903DCE879C4;
6dd74de334 sid-9180E2A0-5C4B-435F-B42F-0D152470A338-->sid-D5E1F2F4-306C-47A2-BF74-F66E3D769756;
6dd74de335 sid-03A2C3AC-5337-48A5-B154-BB3FD0EC8DAD-->sid-8C3F2F1D-F014-4F99-B966-095DC1A2BD93;
6dd74de336 sid-6C2120F3-D940-4958-A067-0903DCE879C4-->sid-4DA958A0-26D9-4D47-93A7-70F39FD7D51A;
6dd74de337 sid-1897B30A-9C5C-4D5B-B80B-76A038785070-->sid-4FC27B48-A6F9-460A-A675-021F5854FE22;
6dd74de338 sid-3E35A7FF-A2F4-4E07-9247-DBF884C81937-->sid-19DD9E9F-98C1-44EE-B604-842AFEE76F1E;
6dd74de339 sid-A1B3CD96-7697-4D7C-BEAA-73D187B1BE89-->sid-9180E2A0-5C4B-435F-B42F-0D152470A338;
6dd74de340 sid-A1B3CD96-7697-4D7C-BEAA-73D187B1BE89-->sid-03A2C3AC-5337-48A5-B154-BB3FD0EC8DAD;
6dd74de341 sid-D5E1F2F4-306C-47A2-BF74-F66E3D769756-->sid-4DA958A0-26D9-4D47-93A7-70F39FD7D51A;
6dd74de342 sid-8C3F2F1D-F014-4F99-B966-095DC1A2BD93-->sid-4DA958A0-26D9-4D47-93A7-70F39FD7D51A;
6dd74de343 sid-7CE72B24-E0C1-46D3-8132-8BA66BE05AA7-->sid-BED98281-9585-4D1B-934E-BD1AC6AC0EFD;
6dd74de344 sid-7CE72B24-E0C1-46D3-8132-8BA66BE05AA7-->sid-E27C0367-E6D6-497F-9736-3CDC21FDE221;
6dd74de345 sid-3E35A7FF-A2F4-4E07-9247-DBF884C81937-->sid-6C2120F3-D940-4958-A067-0903DCE879C4;
6dd74de346 sid-7CE72B24-E0C1-46D3-8132-8BA66BE05AA7-->sid-4DA958A0-26D9-4D47-93A7-70F39FD7D51A;
6dd74de347 sid-7CE72B24-E0C1-46D3-8132-8BA66BE05AA7-->sid-4FC27B48-A6F9-460A-A675-021F5854FE22;
6dd74de348 `,
6dd74de349 { look: 'handDrawn', fontFamily: 'courier' }
6dd74de350 );
6dd74de351 });
6dd74de352
6dd74de353 it('FHD13: should render color of styled nodes', () => {
6dd74de354 imgSnapshotTest(
6dd74de355 `
6dd74de356 graph LR
6dd74de357 foo-->bar
6dd74de358
6dd74de359 classDef foo fill:lightblue,color:green,stroke:#FF9E2C,font-weight:bold
6dd74de360 style foo fill:#F99,stroke-width:2px,stroke:#F0F
6dd74de361 style bar fill:#999,color: #00ff00, stroke-width:10px,stroke:#0F0
6dd74de362 `,
6dd74de363 {
6dd74de364 look: 'handDrawn',
6dd74de365 listUrl: false,
6dd74de366 listId: 'color styling',
6dd74de367 fontFamily: 'courier',
6dd74de368 logLevel: 0,
6dd74de369 }
6dd74de370 );
6dd74de371 });
6dd74de372
6dd74de373 it('FHD14: should render hexagons', () => {
6dd74de374 imgSnapshotTest(
6dd74de375 `
6dd74de376 graph TD
6dd74de377 A[Christmas] -->|Get money| B(Go shopping)
6dd74de378 B --> C{{Let me think...<br />Do I want something for work,<br />something to spend every free second with,<br />or something to get around?}}
6dd74de379 C -->|One| D[Laptop]
6dd74de380 C -->|Two| E[iPhone]
6dd74de381 C -->|Three| F[Car]
6dd74de382 click A "index.html#link-clicked" "link test"
6dd74de383 click B testClick "click test"
6dd74de384 classDef someclass fill:#f96;
6dd74de385 class A someclass;
6dd74de386 class C someclass;
6dd74de387 `,
6dd74de388 {
6dd74de389 look: 'handDrawn',
6dd74de390 listUrl: false,
6dd74de391 listId: 'color styling',
6dd74de392 fontFamily: 'courier',
6dd74de393 logLevel: 0,
6dd74de394 }
6dd74de395 );
6dd74de396 });
6dd74de397
6dd74de398 it('FHD15: should render a simple flowchart with comments', () => {
6dd74de399 imgSnapshotTest(
6dd74de400 `graph TD
6dd74de401 A[Christmas] -->|Get money| B(Go shopping)
6dd74de402 B --> C{Let me think}
6dd74de403 %% this is a comment
6dd74de404 C -->|One| D[Laptop]
6dd74de405 C -->|Two| E[iPhone]
6dd74de406 C -->|Three| F[fa:fa-car Car]
6dd74de407 `,
6dd74de408 {
6dd74de409 look: 'handDrawn',
6dd74de410 flowchart: { htmlLabels: false },
6dd74de411 fontFamily: 'courier',
6dd74de412 }
6dd74de413 );
6dd74de414 });
6dd74de415
6dd74de416 it('FHD16: Render Stadium shape', () => {
6dd74de417 imgSnapshotTest(
6dd74de418 ` graph TD
6dd74de419 A([stadium shape test])
6dd74de420 A -->|Get money| B([Go shopping])
6dd74de421 B --> C([Let me think...<br />Do I want something for work,<br />something to spend every free second with,<br />or something to get around?])
6dd74de422 C -->|One| D([Laptop])
6dd74de423 C -->|Two| E([iPhone])
6dd74de424 C -->|Three| F([Car<br/>wroom wroom])
6dd74de425 click A "index.html#link-clicked" "link test"
6dd74de426 click B testClick "click test"
6dd74de427 classDef someclass fill:#f96;
6dd74de428 class A someclass;
6dd74de429 class C someclass;
6dd74de430 `,
6dd74de431 {
6dd74de432 look: 'handDrawn',
6dd74de433 flowchart: { htmlLabels: false },
6dd74de434 fontFamily: 'courier',
6dd74de435 }
6dd74de436 );
6dd74de437 });
6dd74de438
6dd74de439 it('FHD17: Render multiline texts', () => {
6dd74de440 imgSnapshotTest(
6dd74de441 `graph LR
6dd74de442 A1[Multi<br>Line] -->|Multi<br>Line| B1(Multi<br>Line)
6dd74de443 C1[Multi<br/>Line] -->|Multi<br/>Line| D1(Multi<br/>Line)
6dd74de444 E1[Multi<br />Line] -->|Multi<br />Line| F1(Multi<br />Line)
6dd74de445 A2[Multi<br>Line] -->|Multi<br>Line| B2(Multi<br>Line)
6dd74de446 C2[Multi<br/>Line] -->|Multi<br/>Line| D2(Multi<br/>Line)
6dd74de447 E2[Multi<br />Line] -->|Multi<br />Line| F2(Multi<br />Line)
6dd74de448 linkStyle 0 stroke:DarkGray,stroke-width:2px
6dd74de449 linkStyle 1 stroke:DarkGray,stroke-width:2px
6dd74de450 linkStyle 2 stroke:DarkGray,stroke-width:2px
6dd74de451 `,
6dd74de452 {
6dd74de453 look: 'handDrawn',
6dd74de454 flowchart: { htmlLabels: false },
6dd74de455 fontFamily: 'courier',
6dd74de456 }
6dd74de457 );
6dd74de458 });
6dd74de459
6dd74de460 it('FHD18: Chaining of nodes', () => {
6dd74de461 imgSnapshotTest(
6dd74de462 `graph LR
6dd74de463 a --> b --> c
6dd74de464 `,
6dd74de465 {
6dd74de466 look: 'handDrawn',
6dd74de467 flowchart: { htmlLabels: false },
6dd74de468 fontFamily: 'courier',
6dd74de469 }
6dd74de470 );
6dd74de471 });
6dd74de472
6dd74de473 it('FHD19: Multiple nodes and chaining in one statement', () => {
6dd74de474 imgSnapshotTest(
6dd74de475 `graph LR
6dd74de476 a --> b & c--> d
6dd74de477 `,
6dd74de478 {
6dd74de479 look: 'handDrawn',
6dd74de480 flowchart: { htmlLabels: false },
6dd74de481 fontFamily: 'courier',
6dd74de482 }
6dd74de483 );
6dd74de484 });
6dd74de485
6dd74de486 it('FHD20: Multiple nodes and chaining in one statement', () => {
6dd74de487 imgSnapshotTest(
6dd74de488 `graph TD
6dd74de489 A[ h ] -- hello --> B[" test "]:::exClass & C --> D;
6dd74de490 classDef exClass background:#bbb,border:1px solid red;
6dd74de491 `,
6dd74de492 {
6dd74de493 look: 'handDrawn',
6dd74de494 flowchart: { htmlLabels: false },
6dd74de495 fontFamily: 'courier',
6dd74de496 }
6dd74de497 );
6dd74de498 });
6dd74de499
6dd74de500 it('FDH21: Render cylindrical shape', () => {
6dd74de501 imgSnapshotTest(
6dd74de502 `graph LR
6dd74de503 A[(cylindrical<br />shape<br />test)]
6dd74de504 A -->|Get money| B1[(Go shopping 1)]
6dd74de505 A -->|Get money| B2[(Go shopping 2)]
6dd74de506 A -->|Get money| B3[(Go shopping 3)]
6dd74de507 C[(Let me think...<br />Do I want something for work,<br />something to spend every free second with,<br />or something to get around?)]
6dd74de508 B1 --> C
6dd74de509 B2 --> C
6dd74de510 B3 --> C
6dd74de511 C -->|One| D[(Laptop)]
6dd74de512 C -->|Two| E[(iPhone)]
6dd74de513 C -->|Three| F[(Car)]
6dd74de514 click A "index.html#link-clicked" "link test"
6dd74de515 click B testClick "click test"
6dd74de516 classDef someclass fill:#f96;
6dd74de517 class A someclass;`,
6dd74de518 {
6dd74de519 look: 'handDrawn',
6dd74de520 flowchart: { htmlLabels: false },
6dd74de521 fontFamily: 'courier',
6dd74de522 }
6dd74de523 );
6dd74de524 });
6dd74de525
6dd74de526 it('FDH22: Render a simple flowchart with nodeSpacing set to 100', () => {
6dd74de527 imgSnapshotTest(
6dd74de528 `graph TD
6dd74de529 A[Christmas] -->|Get money| B(Go shopping)
6dd74de530 B --> C{Let me think}
6dd74de531 %% this is a comment
6dd74de532 C -->|One| D[Laptop]
6dd74de533 C -->|Two| E[iPhone]
6dd74de534 C -->|Three| F[fa:fa-car Car]
6dd74de535 `,
6dd74de536 { look: 'handDrawn', flowchart: { nodeSpacing: 50 }, fontFamily: 'courier' }
6dd74de537 );
6dd74de538 });
6dd74de539
6dd74de540 it('FDH23: Render a simple flowchart with rankSpacing set to 100', () => {
6dd74de541 imgSnapshotTest(
6dd74de542 `graph TD
6dd74de543 A[Christmas] -->|Get money| B(Go shopping)
6dd74de544 B --> C{Let me think}
6dd74de545 %% this is a comment
6dd74de546 C -->|One| D[Laptop]
6dd74de547 C -->|Two| E[iPhone]
6dd74de548 C -->|Three| F[fa:fa-car Car]
6dd74de549 `,
6dd74de550 {
6dd74de551 look: 'handDrawn',
6dd74de552 flowchart: { rankSpacing: '100' },
6dd74de553 fontFamily: 'courier',
6dd74de554 }
6dd74de555 );
6dd74de556 });
6dd74de557
6dd74de558 it('FDH24: Keep node label text (if already defined) when a style is applied', () => {
6dd74de559 imgSnapshotTest(
6dd74de560 `graph LR
6dd74de561 A(( )) -->|step 1| B(( ))
6dd74de562 B(( )) -->|step 2| C(( ))
6dd74de563 C(( )) -->|step 3| D(( ))
6dd74de564 linkStyle 1 stroke:greenyellow,stroke-width:2px
6dd74de565 style C fill:greenyellow,stroke:green,stroke-width:4px
6dd74de566 `,
6dd74de567 {
6dd74de568 look: 'handDrawn',
6dd74de569 flowchart: { htmlLabels: false },
6dd74de570 fontFamily: 'courier',
6dd74de571 }
6dd74de572 );
6dd74de573 });
6dd74de574
6dd74de575 it('FDH25: Handle link click events (link, anchor, mailto, other protocol, script)', () => {
6dd74de576 imgSnapshotTest(
6dd74de577 `graph TB
6dd74de578 TITLE["Link Click Events<br>(click the nodes below)"]
6dd74de579 A["link test (open in same tab)"]
6dd74de580 B["link test (open in new tab)"]
6dd74de581 C[anchor test]
6dd74de582 D[mailto test]
6dd74de583 E[other protocol test]
6dd74de584 F[script test]
6dd74de585 TITLE --> A & B & C & D & E & F
6dd74de586 click A "https://mermaid-js.github.io/mermaid/#/" "link test (open in same tab)"
6dd74de587 click B "https://mermaid-js.github.io/mermaid/#/" "link test (open in new tab)" _blank
6dd74de588 click C "#link-clicked"
6dd74de589 click D "mailto:user@user.user" "mailto test"
6dd74de590 click E "notes://do-your-thing/id" "other protocol test"
6dd74de591 click F "javascript:alert('test')" "script test"
6dd74de592 `,
6dd74de593 { look: 'handDrawn', securityLevel: 'loose', fontFamily: 'courier' }
6dd74de594 );
6dd74de595 });
6dd74de596
6dd74de597 it('FDH26: Set text color of nodes and links according to styles when html labels are enabled', () => {
6dd74de598 imgSnapshotTest(
6dd74de599 `graph LR
6dd74de600 A[red<br>text] -->|red<br>text| B(blue<br>text)
6dd74de601 C[/red<br/>text/] -->|blue<br/>text| D{blue<br/>text}
6dd74de602 E{{default<br />style}} -->|default<br />style| F([default<br />style])
6dd74de603 linkStyle default color:Sienna;
6dd74de604 linkStyle 0 color:red;
6dd74de605 linkStyle 1 stroke:DarkGray,stroke-width:2px,color:#0000ff
6dd74de606 style A color:red;
6dd74de607 style B color:blue;
6dd74de608 style C stroke:#ff0000,fill:#ffcccc,color:#ff0000
6dd74de609 style D stroke:#0000ff,fill:#ccccff,color:#0000ff
6dd74de610 click B "index.html#link-clicked" "link test"
6dd74de611 click D testClick "click test"
6dd74de612 `,
6dd74de613 { look: 'handDrawn', flowchart: { htmlLabels: true } }
6dd74de614 );
6dd74de615 });
6dd74de616
6dd74de617 it('FDH27: Set text color of nodes and links according to styles when html labels are disabled', () => {
6dd74de618 imgSnapshotTest(
6dd74de619 `graph LR
6dd74de620 A[red<br>text] -->|red<br>text| B(blue<br>text)
6dd74de621 C[/red<br/>text/] -->|blue<br/>text| D{blue<br/>text}
6dd74de622 E{{default<br />style}} -->|default<br />style| F([default<br />style])
6dd74de623 linkStyle default color:Sienna;
6dd74de624 linkStyle 0 color:red;
6dd74de625 linkStyle 1 stroke:DarkGray,stroke-width:2px,color:#0000ff
6dd74de626 style A color:red;
6dd74de627 style B color:blue;
6dd74de628 style C stroke:#ff0000,fill:#ffcccc,color:#ff0000
6dd74de629 style D stroke:#0000ff,fill:#ccccff,color:#0000ff
6dd74de630 click B "index.html#link-clicked" "link test"
6dd74de631 click D testClick "click test"
6dd74de632 `,
6dd74de633 {
6dd74de634 look: 'handDrawn',
6dd74de635 flowchart: { htmlLabels: false },
6dd74de636 fontFamily: 'courier',
6dd74de637 }
6dd74de638 );
6dd74de639 });
6dd74de640
6dd74de641 it('FDH28: Apply default class to all nodes which do not have another class assigned (htmlLabels enabled)', () => {
6dd74de642 imgSnapshotTest(
6dd74de643 `graph TD
6dd74de644 A[myClass1] --> B[default] & C[default]
6dd74de645 B[default] & C[default] --> D[myClass2]
6dd74de646 classDef default stroke-width:2px,fill:none,stroke:silver
6dd74de647 classDef node color:red
6dd74de648 classDef myClass1 color:#0000ff
6dd74de649 classDef myClass2 stroke:#0000ff,fill:#ccccff
6dd74de650 class A myClass1
6dd74de651 class D myClass2
6dd74de652 `,
6dd74de653 { look: 'handDrawn', flowchart: { htmlLabels: true } }
6dd74de654 );
6dd74de655 });
6dd74de656
6dd74de657 it('FDH29: Apply default class to all nodes which do not have another class assigned (htmlLabels disabled)', () => {
6dd74de658 imgSnapshotTest(
6dd74de659 `graph TD
6dd74de660 A[myClass1] --> B[default] & C[default]
6dd74de661 B[default] & C[default] --> D[myClass2]
6dd74de662 classDef default stroke-width:2px,fill:none,stroke:silver
6dd74de663 classDef node color:red
6dd74de664 classDef myClass1 color:#0000ff
6dd74de665 classDef myClass2 stroke:#0000ff,fill:#ccccff
6dd74de666 class A myClass1
6dd74de667 class D myClass2
6dd74de668 `,
6dd74de669 {
6dd74de670 look: 'handDrawn',
6dd74de671 flowchart: { htmlLabels: false },
6dd74de672 fontFamily: 'courier',
6dd74de673 }
6dd74de674 );
6dd74de675 });
6dd74de676
6dd74de677 it('FDH30: Possibility to style text color of nodes and subgraphs as well as apply classes to subgraphs', () => {
6dd74de678 imgSnapshotTest(
6dd74de679 `graph LR
6dd74de680 subgraph id1 [title is set]
6dd74de681 A-->B
6dd74de682 end
6dd74de683 subgraph id2 [title]
6dd74de684 E
6dd74de685 end
6dd74de686
6dd74de687 B-->C
6dd74de688
6dd74de689 subgraph id3
6dd74de690 C-->D
6dd74de691 end
6dd74de692 class id3,id2,A redBg;
6dd74de693 class id3,A whiteTxt;
6dd74de694 classDef redBg fill:#622;
6dd74de695 classDef whiteTxt color: white;
6dd74de696 `,
6dd74de697 {
6dd74de698 look: 'handDrawn',
6dd74de699 flowchart: { htmlLabels: false },
6dd74de700 fontFamily: 'courier',
6dd74de701 }
6dd74de702 );
6dd74de703 });
6dd74de704
6dd74de705 it('FDH31: should not slice off edges that are to the left of the left-most vertex', () => {
6dd74de706 imgSnapshotTest(
6dd74de707 `graph TD
6dd74de708 work --> sleep
6dd74de709 sleep --> work
6dd74de710 eat --> sleep
6dd74de711 work --> eat
6dd74de712 `,
6dd74de713 {
6dd74de714 look: 'handDrawn',
6dd74de715 flowchart: { htmlLabels: false },
6dd74de716 fontFamily: 'courier',
6dd74de717 }
6dd74de718 );
6dd74de719 });
6dd74de720
6dd74de721 it('FDH32: Render Subroutine shape', () => {
6dd74de722 imgSnapshotTest(
6dd74de723 `graph LR
6dd74de724 A[[subroutine shape test]]
6dd74de725 A -->|Get money| B[[Go shopping]]
6dd74de726 B --> C[[Let me think...<br />Do I want something for work,<br />something to spend every free second with,<br />or something to get around?]]
6dd74de727 C -->|One| D[[Laptop]]
6dd74de728 C -->|Two| E[[iPhone]]
6dd74de729 C -->|Three| F[[Car<br/>wroom wroom]]
6dd74de730 click A "index.html#link-clicked" "link test"
6dd74de731 click B testClick "click test"
6dd74de732 classDef someclass fill:#f96;
6dd74de733 class A someclass;
6dd74de734 class C someclass;
6dd74de735 `,
6dd74de736 {
6dd74de737 look: 'handDrawn',
6dd74de738 flowchart: { htmlLabels: false },
6dd74de739 fontFamily: 'courier',
6dd74de740 }
6dd74de741 );
6dd74de742 });
6dd74de743
6dd74de744 it('FDH33: should render a simple flowchart with diagramPadding set to 0', () => {
6dd74de745 imgSnapshotTest(
6dd74de746 `graph TD
6dd74de747 A[Christmas] -->|Get money| B(Go shopping)
6dd74de748 B --> C{Let me think}
6dd74de749 %% this is a comment
6dd74de750 C -->|One| D[Laptop]
6dd74de751 C -->|Two| E[iPhone]
6dd74de752 C -->|Three| F[fa:fa-car Car]
6dd74de753 `,
6dd74de754 { look: 'handDrawn', flowchart: { diagramPadding: 0 } }
6dd74de755 );
6dd74de756 });
6dd74de757
6dd74de758 it('FDH34: testing the label width in percy', () => {
6dd74de759 imgSnapshotTest(
6dd74de760 `graph TD
6dd74de761 A[Christmas]
6dd74de762 `,
6dd74de763 { look: 'handDrawn', handDrawnSeed: 1 }
6dd74de764 );
6dd74de765 });
6dd74de766
6dd74de767 it('FDH35: should honor minimum edge length as specified by the user', () => {
6dd74de768 imgSnapshotTest(
6dd74de769 `graph TD
6dd74de770 L1 --- L2
6dd74de771 L2 --- C
6dd74de772 M1 ---> C
6dd74de773 R1 .-> R2
6dd74de774 R2 <.-> C
6dd74de775 C -->|Label 1| E1
6dd74de776 C -- Label 2 ---> E2
6dd74de777 C ----> E3
6dd74de778 C -----> E4
6dd74de779 C ======> E5
6dd74de780 `,
6dd74de781 { look: 'handDrawn', handDrawnSeed: 1 }
6dd74de782 );
6dd74de783 });
6dd74de784 it('FDH36: should render escaped without html labels', () => {
6dd74de785 imgSnapshotTest(
6dd74de786 `graph TD
6dd74de787 a["<strong>Haiya</strong>"]-->b
6dd74de788 `,
6dd74de789 { look: 'handDrawn', htmlLabels: false, flowchart: { htmlLabels: false } }
6dd74de790 );
6dd74de791 });
6dd74de792 it('FDH37: should render non-escaped with html labels', () => {
6dd74de793 imgSnapshotTest(
6dd74de794 `graph TD
6dd74de795 a["<strong>Haiya</strong>"]-->b
6dd74de796 `,
6dd74de797 {
6dd74de798 look: 'handDrawn',
6dd74de799 htmlLabels: true,
6dd74de800 flowchart: { htmlLabels: true },
6dd74de801 securityLevel: 'loose',
6dd74de802 }
6dd74de803 );
6dd74de804 });
6dd74de805 it('FDH38: should render a flowchart when useMaxWidth is true (default)', () => {
6dd74de806 renderGraph(
6dd74de807 `flowchart TD
6dd74de808 A[Christmas] -->|Get money| B(Go shopping)
6dd74de809 B --> C{Let me think}
6dd74de810 C -->|One| D[Laptop]
6dd74de811 C -->|Two| E[iPhone]
6dd74de812 C -->|Three| F[fa:fa-car Car]
6dd74de813 `,
6dd74de814 { look: 'handDrawn', flowchart: { useMaxWidth: true } }
6dd74de815 );
6dd74de816 cy.get('svg').should((svg) => {
6dd74de817 expect(svg).to.have.attr('width', '100%');
6dd74de818 // expect(svg).to.have.attr('height');
6dd74de819 // use within because the absolute value can be slightly different depending on the environment ±10%
6dd74de820 // const height = parseFloat(svg.attr('height'));
6dd74de821 // expect(height).to.be.within(446 * 0.95, 446 * 1.05);
6dd74de822 const style = svg.attr('style');
6dd74de823 expect(style).to.match(/^max-width: [\d.]+px;$/);
6dd74de824 const maxWidthValue = parseFloat(style.match(/[\d.]+/g).join(''));
6dd74de825 expect(maxWidthValue).to.be.within(446 * 0.9, 446 * 1.1);
6dd74de826 });
6dd74de827 });
6dd74de828 it('FDH39: should render a flowchart when useMaxWidth is false', () => {
6dd74de829 renderGraph(
6dd74de830 `graph TD
6dd74de831 A[Christmas] -->|Get money| B(Go shopping)
6dd74de832 B --> C{Let me think}
6dd74de833 C -->|One| D[Laptop]
6dd74de834 C -->|Two| E[iPhone]
6dd74de835 C -->|Three| F[fa:fa-car Car]
6dd74de836 `,
6dd74de837 { look: 'handDrawn', flowchart: { useMaxWidth: false } }
6dd74de838 );
6dd74de839 cy.get('svg').should((svg) => {
6dd74de840 // const height = parseFloat(svg.attr('height'));
6dd74de841 const width = parseFloat(svg.attr('width'));
6dd74de842 // use within because the absolute value can be slightly different depending on the environment ±10%
6dd74de843 // expect(height).to.be.within(446 * 0.95, 446 * 1.05);
6dd74de844 expect(width).to.be.within(446 * 0.9, 446 * 1.1);
6dd74de845 expect(svg).to.not.have.attr('style');
6dd74de846 });
6dd74de847 });
6dd74de848 it('FDH40: handle styling with style expressions', () => {
6dd74de849 imgSnapshotTest(
6dd74de850 `
6dd74de851 graph LR
6dd74de852 id1(Start)-->id2(Stop)
6dd74de853 style id1 fill:#f9f,stroke:#333,stroke-width:4px
6dd74de854 style id2 fill:#bbf,stroke:#f66,stroke-width:2px,color:#fff,stroke-dasharray: 5 5
6dd74de855 `,
6dd74de856 {
6dd74de857 look: 'handDrawn',
6dd74de858 htmlLabels: true,
6dd74de859 flowchart: { htmlLabels: true },
6dd74de860 securityLevel: 'loose',
6dd74de861 }
6dd74de862 );
6dd74de863 });
6dd74de864 it('FDH41: handle styling for all node shapes', () => {
6dd74de865 imgSnapshotTest(
6dd74de866 `
6dd74de867 graph LR
6dd74de868 A[red text] -->|default style| B(blue text)
6dd74de869 C([red text]) -->|default style| D[[blue text]]
6dd74de870 E[(red text)] -->|default style| F((blue text))
6dd74de871 G>red text] -->|default style| H{blue text}
6dd74de872 I{{red text}} -->|default style| J[/blue text/]
6dd74de873 linkStyle default color:Sienna;
6dd74de874 style A stroke:#ff0000,fill:#ffcccc,color:#ff0000
6dd74de875 style B stroke:#0000ff,fill:#ccccff,color:#0000ff
6dd74de876 style C stroke:#ff0000,fill:#ffcccc,color:#ff0000
6dd74de877 style D stroke:#0000ff,fill:#ccccff,color:#0000ff
6dd74de878 style E stroke:#ff0000,fill:#ffcccc,color:#ff0000
6dd74de879 style F stroke:#0000ff,fill:#ccccff,color:#0000ff
6dd74de880 style G stroke:#ff0000,fill:#ffcccc,color:#ff0000
6dd74de881 style H stroke:#0000ff,fill:#ccccff,color:#0000ff
6dd74de882 style I stroke:#ff0000,fill:#ffcccc,color:#ff0000
6dd74de883 style J stroke:#0000ff,fill:#ccccff,color:#0000ff
6dd74de884 `,
6dd74de885 {
6dd74de886 look: 'handDrawn',
6dd74de887 htmlLabels: true,
6dd74de888 flowchart: { htmlLabels: true },
6dd74de889 securityLevel: 'loose',
6dd74de890 }
6dd74de891 );
6dd74de892 });
6dd74de893 it('FDH42: fontawesome icons in edge labels', () => {
6dd74de894 imgSnapshotTest(
6dd74de895 `
6dd74de896graph TD
6dd74de897 C -->|fa:fa-car Car| F[fa:fa-car Car]
6dd74de898 `,
6dd74de899 {
6dd74de900 look: 'handDrawn',
6dd74de901 htmlLabels: true,
6dd74de902 flowchart: { htmlLabels: true },
6dd74de903 securityLevel: 'loose',
6dd74de904 }
6dd74de905 );
6dd74de906 });
6dd74de907 it('FDH43: fontawesome icons in edge labels', () => {
6dd74de908 imgSnapshotTest(
6dd74de909 `
6dd74de910 graph TB
6dd74de911 subgraph bar[Bar]
6dd74de912 F
6dd74de913 end
6dd74de914 style bar fill:#999,stroke-width:10px,stroke:#0F0,color:blue
6dd74de915 `,
6dd74de916 {
6dd74de917 look: 'handDrawn',
6dd74de918 htmlLabels: true,
6dd74de919 flowchart: { htmlLabels: true },
6dd74de920 securityLevel: 'loose',
6dd74de921 }
6dd74de922 );
6dd74de923 });
6dd74de924 it('FDH44: fontawesome icons in edge labels', () => {
6dd74de925 imgSnapshotTest(
6dd74de926 `
6dd74de927 graph TB
6dd74de928 A
6dd74de929 B
6dd74de930 subgraph foo[Foo SubGraph]
6dd74de931 C
6dd74de932 D
6dd74de933 end
6dd74de934 subgraph bar[Bar SubGraph]
6dd74de935 E
6dd74de936 F
6dd74de937 end
6dd74de938 G
6dd74de939
6dd74de940 A-->B
6dd74de941 B-->C
6dd74de942 C-->D
6dd74de943 B-->D
6dd74de944 D-->E
6dd74de945 E-->A
6dd74de946 E-->F
6dd74de947 F-->D
6dd74de948 F-->G
6dd74de949 B-->G
6dd74de950 G-->D
6dd74de951
6dd74de952 style foo fill:#F99,stroke-width:2px,stroke:#F0F,color:darkred
6dd74de953 style bar fill:#999,stroke-width:10px,stroke:#0F0,color:blue
6dd74de954 `,
6dd74de955 {
6dd74de956 look: 'handDrawn',
6dd74de957 htmlLabels: true,
6dd74de958 flowchart: { htmlLabels: true },
6dd74de959 securityLevel: 'loose',
6dd74de960 }
6dd74de961 );
6dd74de962 });
6dd74de963 it('FDH45: fontawesome icons in edge labels', () => {
6dd74de964 imgSnapshotTest(
6dd74de965 `
6dd74de966 %%{init:{"theme":"base", "themeVariables": {"primaryColor":"#411d4e", "titleColor":"white", "darkMode":true}}}%%
6dd74de967 flowchart LR
6dd74de968 subgraph A
6dd74de969 a --> b
6dd74de970 end
6dd74de971 subgraph B
6dd74de972 i -->f
6dd74de973 end
6dd74de974 A --> B
6dd74de975 `,
6dd74de976 {
6dd74de977 look: 'handDrawn',
6dd74de978 htmlLabels: true,
6dd74de979 flowchart: { htmlLabels: true },
6dd74de980 securityLevel: 'loose',
6dd74de981 }
6dd74de982 );
6dd74de983 });
6dd74de984 it('FDH46: text-color from classes', () => {
6dd74de985 imgSnapshotTest(
6dd74de986 `
6dd74de987 flowchart LR
6dd74de988 classDef dark fill:#000,stroke:#000,stroke-width:4px,color:#fff
6dd74de989 Lorem --> Ipsum --> Dolor
6dd74de990 class Lorem,Dolor dark
6dd74de991 `,
6dd74de992 {
6dd74de993 look: 'handDrawn',
6dd74de994 htmlLabels: true,
6dd74de995 flowchart: { htmlLabels: true },
6dd74de996 securityLevel: 'loose',
6dd74de997 }
6dd74de998 );
6dd74de999 });
6dd74de1000 it('FDH47: apply class called default on node called default', () => {
6dd74de1001 imgSnapshotTest(
6dd74de1002 `
6dd74de1003 graph TD
6dd74de1004 classDef default fill:#a34,stroke:#000,stroke-width:4px,color:#fff
6dd74de1005 hello --> default
6dd74de1006 `,
6dd74de1007 {
6dd74de1008 look: 'handDrawn',
6dd74de1009 htmlLabels: true,
6dd74de1010 flowchart: { htmlLabels: true },
6dd74de1011 securityLevel: 'loose',
6dd74de1012 }
6dd74de1013 );
6dd74de1014 });
6dd74de1015
6dd74de1016 it('FDH48: should be able to style default node independently', () => {
6dd74de1017 imgSnapshotTest(
6dd74de1018 `
6dd74de1019 flowchart TD
6dd74de1020 classDef default fill:#a34
6dd74de1021 hello --> default
6dd74de1022
6dd74de1023 style default stroke:#000,stroke-width:4px
6dd74de1024 `,
6dd74de1025 {
6dd74de1026 look: 'handDrawn',
6dd74de1027 flowchart: { htmlLabels: true },
6dd74de1028 securityLevel: 'loose',
6dd74de1029 }
6dd74de1030 );
6dd74de1031 });
6dd74de1032
6dd74de1033 it('FDH49: should add edge animation', () => {
6dd74de1034 renderGraph(
6dd74de1035 `
6dd74de1036 flowchart TD
6dd74de1037 A(["Start"]) L_A_B_0@--> B{"Decision"}
6dd74de1038 B --> C["Option A"] & D["Option B"]
6dd74de1039 style C stroke-width:4px,stroke-dasharray: 5
6dd74de1040 L_A_B_0@{ animation: slow }
6dd74de1041 L_B_D_0@{ animation: fast }`,
6dd74de1042 { look: 'handDrawn', screenshot: false }
6dd74de1043 );
6dd74de1044 cy.get('path#L_A_B_0').should('have.class', 'edge-animation-slow');
6dd74de1045 cy.get('path#L_B_D_0').should('have.class', 'edge-animation-fast');
6dd74de1046 });
6dd74de1047});