diff --git a/e2e/README.md b/e2e/README.md
new file mode 100644
index 000000000..d040ba39b
--- /dev/null
+++ b/e2e/README.md
@@ -0,0 +1,9 @@
+# End to end tests
+
+These tests are end to end tests in the sense that they actually render a full diagram in the browser. The purpose of these tests is to simplify handling of merge requests and releases by highlighting possible unexpected side-effects.
+
+Apart from beeing rendered in a browser the tests perform image snapshots of the diagrams. The tests is handled in the same way as regular jest snapshots tests with the difference that an image comparison is performed instead of a comparison of the generated code.
+
+## To run the tests
+1. Start the dev server by running **yarn dev**
+2. Run yarn e2e to run the tests
\ No newline at end of file
diff --git a/e2e/helpers/util.js b/e2e/helpers/util.js
index b7ec91bbc..bd5f7b624 100644
--- a/e2e/helpers/util.js
+++ b/e2e/helpers/util.js
@@ -1,6 +1,7 @@
+/* eslint-env jest */
import { Base64 } from 'js-base64'
-const mermaidUrl = (graphStr, options) => {
+export const mermaidUrl = (graphStr, options) => {
const obj = {
code: graphStr,
mermaid: options
@@ -10,4 +11,16 @@ const mermaidUrl = (graphStr, options) => {
return 'http://localhost:9000/e2e.html?graph=' + Base64.encodeURI(objStr)
}
-export default mermaidUrl
+export const imgSnapshotTest = async (page, graphStr, options) => {
+ return new Promise(async resolve => {
+ const url = mermaidUrl(graphStr, options)
+
+ await page.goto(url)
+
+ const image = await page.screenshot()
+
+ expect(image).toMatchImageSnapshot()
+ resolve()
+ })
+ // page.close()
+}
diff --git a/e2e/spec/__image_snapshots__/class-diagram-spec-js-sequencediagram-should-render-a-simple-class-diagrams-1-snap.png b/e2e/spec/__image_snapshots__/class-diagram-spec-js-sequencediagram-should-render-a-simple-class-diagrams-1-snap.png
new file mode 100644
index 000000000..7beeb0245
Binary files /dev/null and b/e2e/spec/__image_snapshots__/class-diagram-spec-js-sequencediagram-should-render-a-simple-class-diagrams-1-snap.png differ
diff --git a/e2e/spec/__image_snapshots__/flowchart-spec-js-flowcart-should-render-a-flowchart-full-of-circles-1-snap.png b/e2e/spec/__image_snapshots__/flowchart-spec-js-flowcart-should-render-a-flowchart-full-of-circles-1-snap.png
new file mode 100644
index 000000000..c6d41377d
Binary files /dev/null and b/e2e/spec/__image_snapshots__/flowchart-spec-js-flowcart-should-render-a-flowchart-full-of-circles-1-snap.png differ
diff --git a/e2e/spec/__image_snapshots__/flowchart-spec-js-flowcart-should-render-a-flowchart-full-of-icons-1-snap.png b/e2e/spec/__image_snapshots__/flowchart-spec-js-flowcart-should-render-a-flowchart-full-of-icons-1-snap.png
new file mode 100644
index 000000000..5e31b9cca
Binary files /dev/null and b/e2e/spec/__image_snapshots__/flowchart-spec-js-flowcart-should-render-a-flowchart-full-of-icons-1-snap.png differ
diff --git a/e2e/spec/__image_snapshots__/flowchart-spec-js-flowcart-should-render-a-flowchart-with-ling-sames-and-class-definitoins-1-snap.png b/e2e/spec/__image_snapshots__/flowchart-spec-js-flowcart-should-render-a-flowchart-with-ling-sames-and-class-definitoins-1-snap.png
new file mode 100644
index 000000000..fd172ccc5
Binary files /dev/null and b/e2e/spec/__image_snapshots__/flowchart-spec-js-flowcart-should-render-a-flowchart-with-ling-sames-and-class-definitoins-1-snap.png differ
diff --git a/e2e/spec/__image_snapshots__/flowchart-spec-js-flowcart-should-render-a-simple-flowchart-1-snap.png b/e2e/spec/__image_snapshots__/flowchart-spec-js-flowcart-should-render-a-simple-flowchart-1-snap.png
new file mode 100644
index 000000000..ca54fc54b
Binary files /dev/null and b/e2e/spec/__image_snapshots__/flowchart-spec-js-flowcart-should-render-a-simple-flowchart-1-snap.png differ
diff --git a/e2e/spec/__image_snapshots__/flowchart-spec-js-flowcart-should-render-a-simple-flowchart-old-1-snap.png b/e2e/spec/__image_snapshots__/flowchart-spec-js-flowcart-should-render-a-simple-flowchart-old-1-snap.png
new file mode 100644
index 000000000..ca54fc54b
Binary files /dev/null and b/e2e/spec/__image_snapshots__/flowchart-spec-js-flowcart-should-render-a-simple-flowchart-old-1-snap.png differ
diff --git a/e2e/spec/__image_snapshots__/flowchart-spec-js-flowcart-should-render-a-simple-flowchart-with-line-breaks-1-snap.png b/e2e/spec/__image_snapshots__/flowchart-spec-js-flowcart-should-render-a-simple-flowchart-with-line-breaks-1-snap.png
new file mode 100644
index 000000000..3c8e666ec
Binary files /dev/null and b/e2e/spec/__image_snapshots__/flowchart-spec-js-flowcart-should-render-a-simple-flowchart-with-line-breaks-1-snap.png differ
diff --git a/e2e/spec/__image_snapshots__/flowchart-spec-js-flowcart-should-render-a-simple-flowchart-with-long-labels-1-snap.png b/e2e/spec/__image_snapshots__/flowchart-spec-js-flowcart-should-render-a-simple-flowchart-with-long-labels-1-snap.png
new file mode 100644
index 000000000..3c8e666ec
Binary files /dev/null and b/e2e/spec/__image_snapshots__/flowchart-spec-js-flowcart-should-render-a-simple-flowchart-with-long-labels-1-snap.png differ
diff --git a/e2e/spec/__image_snapshots__/flowchart-spec-js-flowcart-should-render-styled-subgraphs-1-snap.png b/e2e/spec/__image_snapshots__/flowchart-spec-js-flowcart-should-render-styled-subgraphs-1-snap.png
new file mode 100644
index 000000000..e2a6b9454
Binary files /dev/null and b/e2e/spec/__image_snapshots__/flowchart-spec-js-flowcart-should-render-styled-subgraphs-1-snap.png differ
diff --git a/e2e/spec/__image_snapshots__/flowchart-spec-js-flowcart-should-render-subgraphs-1-snap.png b/e2e/spec/__image_snapshots__/flowchart-spec-js-flowcart-should-render-subgraphs-1-snap.png
new file mode 100644
index 000000000..d9022b64f
Binary files /dev/null and b/e2e/spec/__image_snapshots__/flowchart-spec-js-flowcart-should-render-subgraphs-1-snap.png differ
diff --git a/e2e/spec/__image_snapshots__/gantt-spec-js-sequencediagram-should-render-a-gantt-chart-1-snap.png b/e2e/spec/__image_snapshots__/gantt-spec-js-sequencediagram-should-render-a-gantt-chart-1-snap.png
new file mode 100644
index 000000000..61e47ed4a
Binary files /dev/null and b/e2e/spec/__image_snapshots__/gantt-spec-js-sequencediagram-should-render-a-gantt-chart-1-snap.png differ
diff --git a/e2e/spec/__image_snapshots__/git-graph-spec-js-sequencediagram-should-render-a-simple-git-graph-1-snap.png b/e2e/spec/__image_snapshots__/git-graph-spec-js-sequencediagram-should-render-a-simple-git-graph-1-snap.png
new file mode 100644
index 000000000..c53502031
Binary files /dev/null and b/e2e/spec/__image_snapshots__/git-graph-spec-js-sequencediagram-should-render-a-simple-git-graph-1-snap.png differ
diff --git a/e2e/spec/__image_snapshots__/sequencediagram-spec-js-sequencediagram-should-render-a-simple-sequence-diagrams-1-snap.png b/e2e/spec/__image_snapshots__/sequencediagram-spec-js-sequencediagram-should-render-a-simple-sequence-diagrams-1-snap.png
new file mode 100644
index 000000000..fe6735ab3
Binary files /dev/null and b/e2e/spec/__image_snapshots__/sequencediagram-spec-js-sequencediagram-should-render-a-simple-sequence-diagrams-1-snap.png differ
diff --git a/e2e/spec/classDiagram.spec.js b/e2e/spec/classDiagram.spec.js
new file mode 100644
index 000000000..e4fba5a2c
--- /dev/null
+++ b/e2e/spec/classDiagram.spec.js
@@ -0,0 +1,27 @@
+/* eslint-env jest */
+import { imgSnapshotTest } from '../helpers/util.js'
+const { toMatchImageSnapshot } = require('jest-image-snapshot')
+
+expect.extend({ toMatchImageSnapshot })
+
+describe('Sequencediagram', () => {
+ it('should render a simple class diagrams', async () => {
+ await imgSnapshotTest(page, `
+ classDiagram
+ Class01 <|-- AveryLongClass : Cool
+ Class03 *-- Class04
+ Class05 o-- Class06
+ Class07 .. Class08
+ Class09 --> C2 : Where am i?
+ Class09 --* C3
+ Class09 --|> Class07
+ Class07 : equals()
+ Class07 : Object[] elementData
+ Class01 : size()
+ Class01 : int chimp
+ Class01 : int gorilla
+ Class08 <--> C2: Cool label
+ `,
+ {})
+ })
+})
diff --git a/e2e/spec/flowchart.spec.js b/e2e/spec/flowchart.spec.js
index b9d96a3d1..fd4092747 100644
--- a/e2e/spec/flowchart.spec.js
+++ b/e2e/spec/flowchart.spec.js
@@ -1,23 +1,267 @@
/* eslint-env jest */
-import mermaidUrl from '../helpers/util.js'
+import { imgSnapshotTest } from '../helpers/util.js'
const { toMatchImageSnapshot } = require('jest-image-snapshot')
expect.extend({ toMatchImageSnapshot })
-describe('Google', () => {
- it('should apa', async () => {
- const url = mermaidUrl(`graph TD
- A[Christmas] -->|Get money| B(Go shopping)
- B --> C{Let me think}
- C -->|One| D[Laptop]
- C -->|Two| E[iPhone]
- C -->|Three| F[fa:fa-car Car]
- `, {})
+describe('Flowcart', () => {
+ it('should render a simple flowchart', async () => {
+ await imgSnapshotTest(page, `graph TD
+ A[Christmas] -->|Get money| B(Go shopping)
+ B --> C{Let me think}
+ C -->|One| D[Laptop]
+ C -->|Two| E[iPhone]
+ C -->|Three| F[fa:fa-car Car]
+ `,
+ {})
+ })
+ it('should render a simple flowchart with line breaks', async () => {
+ await imgSnapshotTest(page, `
+ graph TD
+ A[Christmas] -->|Get money| B(Go shopping)
+ B --> C{Let me thinksssss
ssssssssssssssssssssss
sssssssssssssssssssssssssss}
+ C -->|One| D[Laptop]
+ C -->|Two| E[iPhone]
+ C -->|Three| F[Car]
+ `,
+ {})
+ })
- await page.goto(url)
+ it('should render a flowchart full of circles', async () => {
+ await imgSnapshotTest(page, `
+ graph LR
+ 47(SAM.CommonFA.FMESummary)-->48(SAM.CommonFA.CommonFAFinanceBudget)
+ 37(SAM.CommonFA.BudgetSubserviceLineVolume)-->48(SAM.CommonFA.CommonFAFinanceBudget)
+ 35(SAM.CommonFA.PopulationFME)-->47(SAM.CommonFA.FMESummary)
+ 41(SAM.CommonFA.MetricCost)-->47(SAM.CommonFA.FMESummary)
+ 44(SAM.CommonFA.MetricOutliers)-->47(SAM.CommonFA.FMESummary)
+ 46(SAM.CommonFA.MetricOpportunity)-->47(SAM.CommonFA.FMESummary)
+ 40(SAM.CommonFA.OPVisits)-->47(SAM.CommonFA.FMESummary)
+ 38(SAM.CommonFA.CommonFAFinanceRefund)-->47(SAM.CommonFA.FMESummary)
+ 43(SAM.CommonFA.CommonFAFinancePicuDays)-->47(SAM.CommonFA.FMESummary)
+ 42(SAM.CommonFA.CommonFAFinanceNurseryDays)-->47(SAM.CommonFA.FMESummary)
+ 45(SAM.CommonFA.MetricPreOpportunity)-->46(SAM.CommonFA.MetricOpportunity)
+ 35(SAM.CommonFA.PopulationFME)-->45(SAM.CommonFA.MetricPreOpportunity)
+ 41(SAM.CommonFA.MetricCost)-->45(SAM.CommonFA.MetricPreOpportunity)
+ 41(SAM.CommonFA.MetricCost)-->44(SAM.CommonFA.MetricOutliers)
+ 39(SAM.CommonFA.ChargeDetails)-->43(SAM.CommonFA.CommonFAFinancePicuDays)
+ 39(SAM.CommonFA.ChargeDetails)-->42(SAM.CommonFA.CommonFAFinanceNurseryDays)
+ 39(SAM.CommonFA.ChargeDetails)-->41(SAM.CommonFA.MetricCost)
+ 39(SAM.CommonFA.ChargeDetails)-->40(SAM.CommonFA.OPVisits)
+ 35(SAM.CommonFA.PopulationFME)-->39(SAM.CommonFA.ChargeDetails)
+ 36(SAM.CommonFA.PremetricCost)-->39(SAM.CommonFA.ChargeDetails)
+ `,
+ {})
+ })
+ it('should render a flowchart full of icons', async () => {
+ await imgSnapshotTest(page, `
+ graph TD
+ 9e122290_1ec3_e711_8c5a_005056ad0002("fa:fa-creative-commons My System | Test Environment")
+ 82072290_1ec3_e711_8c5a_005056ad0002("fa:fa-cogs Shared Business Logic Server:Service 1")
+ db052290_1ec3_e711_8c5a_005056ad0002("fa:fa-cogs Shared Business Logic Server:Service 2")
+ 4e112290_1ec3_e711_8c5a_005056ad0002("fa:fa-cogs Shared Report Server:Service 1")
+ 30122290_1ec3_e711_8c5a_005056ad0002("fa:fa-cogs Shared Report Server:Service 2")
+ 5e112290_1ec3_e711_8c5a_005056ad0002("fa:fa-cogs Dedicated Test Business Logic Server:Service 1")
+ c1112290_1ec3_e711_8c5a_005056ad0002("fa:fa-cogs Dedicated Test Business Logic Server:Service 2")
+ b7042290_1ec3_e711_8c5a_005056ad0002("fa:fa-circle [DBServer\\SharedDbInstance].[SupportDb]")
+ 8f102290_1ec3_e711_8c5a_005056ad0002("fa:fa-circle [DBServer\\SharedDbInstance].[DevelopmentDb]")
+ 0e102290_1ec3_e711_8c5a_005056ad0002("fa:fa-circle [DBServer\\SharedDbInstance].[TestDb]")
+ 07132290_1ec3_e711_8c5a_005056ad0002("fa:fa-circle [DBServer\\SharedDbInstance].[SharedReportingDb]")
+ c7072290_1ec3_e711_8c5a_005056ad0002("fa:fa-server Shared Business Logic Server")
+ ca122290_1ec3_e711_8c5a_005056ad0002("fa:fa-server Shared Report Server")
+ 68102290_1ec3_e711_8c5a_005056ad0002("fa:fa-server Dedicated Test Business Logic Server")
+ f4112290_1ec3_e711_8c5a_005056ad0002("fa:fa-database [DBServer\\SharedDbInstance]")
+ d6072290_1ec3_e711_8c5a_005056ad0002("fa:fa-server DBServer")
+ 71082290_1ec3_e711_8c5a_005056ad0002("fa:fa-cogs DBServer\\:MSSQLSERVER")
+ c0102290_1ec3_e711_8c5a_005056ad0002("fa:fa-cogs DBServer\\:SQLAgent")
+ 9a072290_1ec3_e711_8c5a_005056ad0002("fa:fa-cogs DBServer\\:SQLBrowser")
+ 1d0a2290_1ec3_e711_8c5a_005056ad0002("fa:fa-server VmHost1")
+ 200a2290_1ec3_e711_8c5a_005056ad0002("fa:fa-server VmHost2")
+ 1c0a2290_1ec3_e711_8c5a_005056ad0002("fa:fa-server VmHost3")
+ 9e122290_1ec3_e711_8c5a_005056ad0002-->82072290_1ec3_e711_8c5a_005056ad0002
+ 9e122290_1ec3_e711_8c5a_005056ad0002-->db052290_1ec3_e711_8c5a_005056ad0002
+ 9e122290_1ec3_e711_8c5a_005056ad0002-->4e112290_1ec3_e711_8c5a_005056ad0002
+ 9e122290_1ec3_e711_8c5a_005056ad0002-->30122290_1ec3_e711_8c5a_005056ad0002
+ 9e122290_1ec3_e711_8c5a_005056ad0002-->5e112290_1ec3_e711_8c5a_005056ad0002
+ 9e122290_1ec3_e711_8c5a_005056ad0002-->c1112290_1ec3_e711_8c5a_005056ad0002
+ 82072290_1ec3_e711_8c5a_005056ad0002-->b7042290_1ec3_e711_8c5a_005056ad0002
+ 82072290_1ec3_e711_8c5a_005056ad0002-->8f102290_1ec3_e711_8c5a_005056ad0002
+ 82072290_1ec3_e711_8c5a_005056ad0002-->0e102290_1ec3_e711_8c5a_005056ad0002
+ 82072290_1ec3_e711_8c5a_005056ad0002-->c7072290_1ec3_e711_8c5a_005056ad0002
+ db052290_1ec3_e711_8c5a_005056ad0002-->c7072290_1ec3_e711_8c5a_005056ad0002
+ db052290_1ec3_e711_8c5a_005056ad0002-->82072290_1ec3_e711_8c5a_005056ad0002
+ 4e112290_1ec3_e711_8c5a_005056ad0002-->b7042290_1ec3_e711_8c5a_005056ad0002
+ 4e112290_1ec3_e711_8c5a_005056ad0002-->8f102290_1ec3_e711_8c5a_005056ad0002
+ 4e112290_1ec3_e711_8c5a_005056ad0002-->0e102290_1ec3_e711_8c5a_005056ad0002
+ 4e112290_1ec3_e711_8c5a_005056ad0002-->07132290_1ec3_e711_8c5a_005056ad0002
+ 4e112290_1ec3_e711_8c5a_005056ad0002-->ca122290_1ec3_e711_8c5a_005056ad0002
+ 30122290_1ec3_e711_8c5a_005056ad0002-->ca122290_1ec3_e711_8c5a_005056ad0002
+ 30122290_1ec3_e711_8c5a_005056ad0002-->4e112290_1ec3_e711_8c5a_005056ad0002
+ 5e112290_1ec3_e711_8c5a_005056ad0002-->8f102290_1ec3_e711_8c5a_005056ad0002
+ 5e112290_1ec3_e711_8c5a_005056ad0002-->68102290_1ec3_e711_8c5a_005056ad0002
+ c1112290_1ec3_e711_8c5a_005056ad0002-->68102290_1ec3_e711_8c5a_005056ad0002
+ c1112290_1ec3_e711_8c5a_005056ad0002-->5e112290_1ec3_e711_8c5a_005056ad0002
+ b7042290_1ec3_e711_8c5a_005056ad0002-->f4112290_1ec3_e711_8c5a_005056ad0002
+ 8f102290_1ec3_e711_8c5a_005056ad0002-->f4112290_1ec3_e711_8c5a_005056ad0002
+ 0e102290_1ec3_e711_8c5a_005056ad0002-->f4112290_1ec3_e711_8c5a_005056ad0002
+ 07132290_1ec3_e711_8c5a_005056ad0002-->f4112290_1ec3_e711_8c5a_005056ad0002
+ c7072290_1ec3_e711_8c5a_005056ad0002-->1d0a2290_1ec3_e711_8c5a_005056ad0002
+ ca122290_1ec3_e711_8c5a_005056ad0002-->200a2290_1ec3_e711_8c5a_005056ad0002
+ 68102290_1ec3_e711_8c5a_005056ad0002-->1c0a2290_1ec3_e711_8c5a_005056ad0002
+ f4112290_1ec3_e711_8c5a_005056ad0002-->d6072290_1ec3_e711_8c5a_005056ad0002
+ f4112290_1ec3_e711_8c5a_005056ad0002-->71082290_1ec3_e711_8c5a_005056ad0002
+ f4112290_1ec3_e711_8c5a_005056ad0002-->c0102290_1ec3_e711_8c5a_005056ad0002
+ f4112290_1ec3_e711_8c5a_005056ad0002-->9a072290_1ec3_e711_8c5a_005056ad0002
+ d6072290_1ec3_e711_8c5a_005056ad0002-->1c0a2290_1ec3_e711_8c5a_005056ad0002
+ 71082290_1ec3_e711_8c5a_005056ad0002-->d6072290_1ec3_e711_8c5a_005056ad0002
+ c0102290_1ec3_e711_8c5a_005056ad0002-->d6072290_1ec3_e711_8c5a_005056ad0002
+ c0102290_1ec3_e711_8c5a_005056ad0002-->71082290_1ec3_e711_8c5a_005056ad0002
+ 9a072290_1ec3_e711_8c5a_005056ad0002-->d6072290_1ec3_e711_8c5a_005056ad0002
+ 9a072290_1ec3_e711_8c5a_005056ad0002-->71082290_1ec3_e711_8c5a_005056ad0002
+ `,
+ {})
+ })
- const image = await page.screenshot()
+ it('should render subgraphs', async () => {
+ await imgSnapshotTest(page, `
+ graph TB
+ subgraph One
+ a1-->a2
+ end
+ `,
+ {})
+ })
- expect(image).toMatchImageSnapshot()
+ it('should render styled subgraphs', async () => {
+ await imgSnapshotTest(page, `
+ graph TB
+ A
+ B
+ subgraph foo[Foo SubGraph]
+ C
+ D
+ end
+ subgraph bar[Bar SubGraph]
+ E
+ F
+ end
+ G
+
+ A-->B
+ B-->C
+ C-->D
+ B-->D
+ D-->E
+ E-->A
+ E-->F
+ F-->D
+ F-->G
+ B-->G
+ G-->D
+
+ style foo fill:#F99,stroke-width:2px,stroke:#F0F
+ style bar fill:#999,stroke-width:10px,stroke:#0F0
+ `,
+ {})
+ })
+
+ it('should render a flowchart with ling sames and class definitoins', async () => {
+ await imgSnapshotTest(page, `graph LR
+ sid-B3655226-6C29-4D00-B685-3D5C734DC7E1["
+
+ 提交申请
+ 熊大
+ "];
+ class sid-B3655226-6C29-4D00-B685-3D5C734DC7E1 node-executed;
+ sid-4DA958A0-26D9-4D47-93A7-70F39FD7D51A["
+ 负责人审批
+ 强子
+ "];
+ class sid-4DA958A0-26D9-4D47-93A7-70F39FD7D51A node-executed;
+ sid-E27C0367-E6D6-497F-9736-3CDC21FDE221["
+ DBA审批
+ 强子
+ "];
+ class sid-E27C0367-E6D6-497F-9736-3CDC21FDE221 node-executed;
+ sid-BED98281-9585-4D1B-934E-BD1AC6AC0EFD["
+ SA审批
+ 阿美
+ "];
+ class sid-BED98281-9585-4D1B-934E-BD1AC6AC0EFD node-executed;
+ sid-7CE72B24-E0C1-46D3-8132-8BA66BE05AA7["
+ 主管审批
+ 光头强
+ "];
+ class sid-7CE72B24-E0C1-46D3-8132-8BA66BE05AA7 node-executed;
+ sid-A1B3CD96-7697-4D7C-BEAA-73D187B1BE89["
+ DBA确认
+ 强子
+ "];
+ class sid-A1B3CD96-7697-4D7C-BEAA-73D187B1BE89 node-executed;
+ sid-3E35A7FF-A2F4-4E07-9247-DBF884C81937["
+ SA确认
+ 阿美
+ "];
+ class sid-3E35A7FF-A2F4-4E07-9247-DBF884C81937 node-executed;
+ sid-4FC27B48-A6F9-460A-A675-021F5854FE22["
+ 结束
+ "];
+ class sid-4FC27B48-A6F9-460A-A675-021F5854FE22 node-executed;
+ sid-19DD9E9F-98C1-44EE-B604-842AFEE76F1E["
+ SA执行1
+ 强子
+ "];
+ class sid-19DD9E9F-98C1-44EE-B604-842AFEE76F1E node-executed;
+ sid-6C2120F3-D940-4958-A067-0903DCE879C4["
+ SA执行2
+ 强子
+ "];
+ class sid-6C2120F3-D940-4958-A067-0903DCE879C4 node-executed;
+ sid-9180E2A0-5C4B-435F-B42F-0D152470A338["
+ DBA执行1
+ 强子
+ "];
+ class sid-9180E2A0-5C4B-435F-B42F-0D152470A338 node-executed;
+ sid-03A2C3AC-5337-48A5-B154-BB3FD0EC8DAD["
+ DBA执行3
+ 强子
+ "];
+ class sid-03A2C3AC-5337-48A5-B154-BB3FD0EC8DAD node-executed;
+ sid-D5E1F2F4-306C-47A2-BF74-F66E3D769756["
+ DBA执行2
+ 强子
+ "];
+ class sid-D5E1F2F4-306C-47A2-BF74-F66E3D769756 node-executed;
+ sid-8C3F2F1D-F014-4F99-B966-095DC1A2BD93["
+ DBA执行4
+ 强子
+ "];
+ class sid-8C3F2F1D-F014-4F99-B966-095DC1A2BD93 node-executed;
+ sid-1897B30A-9C5C-4D5B-B80B-76A038785070["
+ 负责人确认
+ 梁静茹
+ "];
+ class sid-1897B30A-9C5C-4D5B-B80B-76A038785070 node-executed;
+ sid-B3655226-6C29-4D00-B685-3D5C734DC7E1-->sid-7CE72B24-E0C1-46D3-8132-8BA66BE05AA7;
+ sid-4DA958A0-26D9-4D47-93A7-70F39FD7D51A-->sid-1897B30A-9C5C-4D5B-B80B-76A038785070;
+ sid-E27C0367-E6D6-497F-9736-3CDC21FDE221-->sid-A1B3CD96-7697-4D7C-BEAA-73D187B1BE89;
+ sid-BED98281-9585-4D1B-934E-BD1AC6AC0EFD-->sid-3E35A7FF-A2F4-4E07-9247-DBF884C81937;
+ sid-19DD9E9F-98C1-44EE-B604-842AFEE76F1E-->sid-6C2120F3-D940-4958-A067-0903DCE879C4;
+ sid-9180E2A0-5C4B-435F-B42F-0D152470A338-->sid-D5E1F2F4-306C-47A2-BF74-F66E3D769756;
+ sid-03A2C3AC-5337-48A5-B154-BB3FD0EC8DAD-->sid-8C3F2F1D-F014-4F99-B966-095DC1A2BD93;
+ sid-6C2120F3-D940-4958-A067-0903DCE879C4-->sid-4DA958A0-26D9-4D47-93A7-70F39FD7D51A;
+ sid-1897B30A-9C5C-4D5B-B80B-76A038785070-->sid-4FC27B48-A6F9-460A-A675-021F5854FE22;
+ sid-3E35A7FF-A2F4-4E07-9247-DBF884C81937-->sid-19DD9E9F-98C1-44EE-B604-842AFEE76F1E;
+ sid-A1B3CD96-7697-4D7C-BEAA-73D187B1BE89-->sid-9180E2A0-5C4B-435F-B42F-0D152470A338;
+ sid-A1B3CD96-7697-4D7C-BEAA-73D187B1BE89-->sid-03A2C3AC-5337-48A5-B154-BB3FD0EC8DAD;
+ sid-D5E1F2F4-306C-47A2-BF74-F66E3D769756-->sid-4DA958A0-26D9-4D47-93A7-70F39FD7D51A;
+ sid-8C3F2F1D-F014-4F99-B966-095DC1A2BD93-->sid-4DA958A0-26D9-4D47-93A7-70F39FD7D51A;
+ sid-7CE72B24-E0C1-46D3-8132-8BA66BE05AA7-->sid-BED98281-9585-4D1B-934E-BD1AC6AC0EFD;
+ sid-7CE72B24-E0C1-46D3-8132-8BA66BE05AA7-->sid-E27C0367-E6D6-497F-9736-3CDC21FDE221;
+ sid-3E35A7FF-A2F4-4E07-9247-DBF884C81937-->sid-6C2120F3-D940-4958-A067-0903DCE879C4;
+ sid-7CE72B24-E0C1-46D3-8132-8BA66BE05AA7-->sid-4DA958A0-26D9-4D47-93A7-70F39FD7D51A;
+ sid-7CE72B24-E0C1-46D3-8132-8BA66BE05AA7-->sid-4FC27B48-A6F9-460A-A675-021F5854FE22;
+ `,
+ {})
})
})
diff --git a/e2e/spec/gantt.spec.js b/e2e/spec/gantt.spec.js
new file mode 100644
index 000000000..7ead76f21
--- /dev/null
+++ b/e2e/spec/gantt.spec.js
@@ -0,0 +1,42 @@
+/* eslint-env jest */
+import { imgSnapshotTest } from '../helpers/util.js'
+const { toMatchImageSnapshot } = require('jest-image-snapshot')
+
+expect.extend({ toMatchImageSnapshot })
+
+describe('Sequencediagram', () => {
+ it('should render a gantt chart', async () => {
+ await imgSnapshotTest(page, `
+ gantt
+ dateFormat YYYY-MM-DD
+ axisFormat %d/%m
+ title Adding GANTT diagram to mermaid
+ excludes weekdays 2014-01-10
+
+ section A section
+ Completed task :done, des1, 2014-01-06,2014-01-08
+ Active task :active, des2, 2014-01-09, 3d
+ Future task : des3, after des2, 5d
+ Future task2 : des4, after des3, 5d
+
+ section Critical tasks
+ Completed task in the critical line :crit, done, 2014-01-06,24h
+ Implement parser and jison :crit, done, after des1, 2d
+ Create tests for parser :crit, active, 3d
+ Future task in critical line :crit, 5d
+ Create tests for renderer :2d
+ Add to mermaid :1d
+
+ section Documentation
+ Describe gantt syntax :active, a1, after des1, 3d
+ Add gantt diagram to demo page :after a1 , 20h
+ Add another diagram to demo page :doc1, after a1 , 48h
+
+ section Last section
+ Describe gantt syntax :after doc1, 3d
+ Add gantt diagram to demo page : 20h
+ Add another diagram to demo page : 48h
+ `,
+ {})
+ })
+})
diff --git a/e2e/spec/gitGraph.spec.js b/e2e/spec/gitGraph.spec.js
new file mode 100644
index 000000000..43886134e
--- /dev/null
+++ b/e2e/spec/gitGraph.spec.js
@@ -0,0 +1,29 @@
+/* eslint-env jest */
+import { imgSnapshotTest } from '../helpers/util.js'
+const { toMatchImageSnapshot } = require('jest-image-snapshot')
+
+expect.extend({ toMatchImageSnapshot })
+
+describe('Sequencediagram', () => {
+ it('should render a simple git graph', async () => {
+ await imgSnapshotTest(page, `
+ gitGraph:
+ options
+ {
+ "nodeSpacing": 150,
+ "nodeRadius": 10
+ }
+ end
+ commit
+ branch newbranch
+ checkout newbranch
+ commit
+ commit
+ checkout master
+ commit
+ commit
+ merge newbranch
+ `,
+ {})
+ })
+})
diff --git a/e2e/spec/sequencediagram.spec.js b/e2e/spec/sequencediagram.spec.js
new file mode 100644
index 000000000..61572d2d9
--- /dev/null
+++ b/e2e/spec/sequencediagram.spec.js
@@ -0,0 +1,35 @@
+/* eslint-env jest */
+import { imgSnapshotTest } from '../helpers/util.js'
+const { toMatchImageSnapshot } = require('jest-image-snapshot')
+
+expect.extend({ toMatchImageSnapshot })
+
+describe('Sequencediagram', () => {
+ it('should render a simple sequence diagrams', async () => {
+ await imgSnapshotTest(page, `
+ sequenceDiagram
+ participant Alice
+ participant Bob
+ participant John as John
Second Line
+ Alice ->> Bob: Hello Bob, how are you?
+ Bob-->>John: How about you John?
+ Bob--x Alice: I am good thanks!
+ Bob-x John: I am good thanks!
+ Note right of John: Bob thinks a long
long time, so long
that the text does
not fit on a row.
+ Bob-->Alice: Checking with John...
+ alt either this
+ Alice->>John: Yes
+ else or this
+ Alice->>John: No
+ else or this will happen
+ Alice->John: Maybe
+ end
+ par this happens in parallel
+ Alice -->> Bob: Parallel message 1
+ and
+ Alice -->> John: Parallel message 2
+ end
+ `,
+ {})
+ })
+})