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