mirror of
				https://github.com/mermaid-js/mermaid.git
				synced 2025-11-04 04:44:08 +01:00 
			
		
		
		
	Merge branch 'next' into feat/948_packetDiagram
* next: (193 commits) Update all patch dependencies Fix docs Update packages/mermaid/src/docs/community/questions-and-suggestions.md Update packages/mermaid/src/diagrams/class/classRenderer-v2.ts update edge ids draw top actors with lines first followed by messages Bump GitHub workflow actions to latest versions Update docs Documentation: clarify sentence Fix lint Fix typo fix typo Add new Atlassian integrations chore(deps): update all patch dependencies Update demos/sequence.html chore: release v10.6.1 fix fix fix: render the participants in same order as they are created fix(flow): fix invalid ellipseText regex ...
This commit is contained in:
		@@ -132,4 +132,9 @@ describe('XSS', () => {
 | 
			
		||||
    cy.wait(1000);
 | 
			
		||||
    cy.get('#the-malware').should('not.exist');
 | 
			
		||||
  });
 | 
			
		||||
  it('should sanitize backticks in class names properly', () => {
 | 
			
		||||
    cy.visit('http://localhost:9000/xss24.html');
 | 
			
		||||
    cy.wait(1000);
 | 
			
		||||
    cy.get('#the-malware').should('not.exist');
 | 
			
		||||
  });
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
@@ -501,4 +501,16 @@ describe('Class diagram', () => {
 | 
			
		||||
        B : -methods()
 | 
			
		||||
      `);
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  it('should handle notes with anchor tag having target attribute', () => {
 | 
			
		||||
    renderGraph(
 | 
			
		||||
      `classDiagram
 | 
			
		||||
        class test { }
 | 
			
		||||
        note for test "<a href='https://mermaid.js.org/' target="_blank"><code>note about mermaid</code></a>"`
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
    cy.get('svg').then((svg) => {
 | 
			
		||||
      cy.get('a').should('have.attr', 'target', '_blank').should('have.attr', 'rel', 'noopener');
 | 
			
		||||
    });
 | 
			
		||||
  });
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
import { imgSnapshotTest } from '../../helpers/util.ts';
 | 
			
		||||
import { imgSnapshotTest, urlSnapshotTest } from '../../helpers/util.ts';
 | 
			
		||||
 | 
			
		||||
describe('Configuration and directives - nodes should be light blue', () => {
 | 
			
		||||
  it('No config - use default', () => {
 | 
			
		||||
@@ -206,8 +206,7 @@ graph TD
 | 
			
		||||
  describe('when rendering several diagrams', () => {
 | 
			
		||||
    it('diagrams should not taint later diagrams', () => {
 | 
			
		||||
      const url = 'http://localhost:9000/theme-directives.html';
 | 
			
		||||
      cy.visit(url);
 | 
			
		||||
      cy.matchImageSnapshot('conf-and-directives.spec-when-rendering-several-diagrams-diagram-1');
 | 
			
		||||
      urlSnapshotTest(url, {});
 | 
			
		||||
    });
 | 
			
		||||
  });
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
@@ -520,6 +520,32 @@ describe('Gantt diagram', () => {
 | 
			
		||||
    );
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  // TODO: fix it
 | 
			
		||||
  //
 | 
			
		||||
  // This test is skipped deliberately
 | 
			
		||||
  // because it fails and blocks our development pipeline
 | 
			
		||||
  // It was added as an attempt to fix gantt performance issues
 | 
			
		||||
  //
 | 
			
		||||
  // https://github.com/mermaid-js/mermaid/issues/3274
 | 
			
		||||
  //
 | 
			
		||||
  it.skip('should render a gantt diagram with very large intervals, skipping excludes if interval > 5 years', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
      `gantt
 | 
			
		||||
        title A long Gantt Diagram
 | 
			
		||||
        dateFormat   YYYY-MM-DD
 | 
			
		||||
        axisFormat   %m-%d
 | 
			
		||||
        tickInterval 1day
 | 
			
		||||
        excludes     weekends
 | 
			
		||||
        section Section
 | 
			
		||||
        A task           : a1, 9999-10-01, 30d
 | 
			
		||||
        Another task     : after a1, 20d
 | 
			
		||||
        section Another
 | 
			
		||||
        Task in sec      : 2022-10-20, 12d
 | 
			
		||||
        another task     : 24d
 | 
			
		||||
      `
 | 
			
		||||
    );
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  it('should render when compact is true', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
      `
 | 
			
		||||
 
 | 
			
		||||
@@ -26,7 +26,7 @@ describe('Git Graph diagram', () => {
 | 
			
		||||
      `gitGraph
 | 
			
		||||
       commit id: "Normal Commit"
 | 
			
		||||
       commit id: "Reverse Commit" type: REVERSE
 | 
			
		||||
       commit id: "Hightlight Commit" type: HIGHLIGHT
 | 
			
		||||
       commit id: "Highlight Commit" type: HIGHLIGHT
 | 
			
		||||
      `,
 | 
			
		||||
      {}
 | 
			
		||||
    );
 | 
			
		||||
@@ -36,7 +36,7 @@ describe('Git Graph diagram', () => {
 | 
			
		||||
      `gitGraph
 | 
			
		||||
       commit id: "Normal Commit with tag" tag: "v1.0.0"
 | 
			
		||||
       commit id: "Reverse Commit with tag" type: REVERSE tag: "RC_1"
 | 
			
		||||
       commit id: "Hightlight Commit" type: HIGHLIGHT  tag: "8.8.4"
 | 
			
		||||
       commit id: "Highlight Commit" type: HIGHLIGHT  tag: "8.8.4"
 | 
			
		||||
      `,
 | 
			
		||||
      {}
 | 
			
		||||
    );
 | 
			
		||||
@@ -102,7 +102,7 @@ describe('Git Graph diagram', () => {
 | 
			
		||||
      {}
 | 
			
		||||
    );
 | 
			
		||||
  });
 | 
			
		||||
  it('8: should render a simple gitgraph with more than 8 branchs &  overriding variables', () => {
 | 
			
		||||
  it('8: should render a simple gitgraph with more than 8 branches &  overriding variables', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
      `%%{init: { 'logLevel': 'debug', 'theme': 'default' , 'themeVariables': {
 | 
			
		||||
        'gitBranchLabel0': '#ffffff',
 | 
			
		||||
@@ -358,7 +358,7 @@ gitGraph
 | 
			
		||||
      `gitGraph TB:
 | 
			
		||||
       commit id: "Normal Commit"
 | 
			
		||||
       commit id: "Reverse Commit" type: REVERSE
 | 
			
		||||
       commit id: "Hightlight Commit" type: HIGHLIGHT
 | 
			
		||||
       commit id: "Highlight Commit" type: HIGHLIGHT
 | 
			
		||||
      `,
 | 
			
		||||
      {}
 | 
			
		||||
    );
 | 
			
		||||
@@ -368,7 +368,7 @@ gitGraph
 | 
			
		||||
      `gitGraph TB:
 | 
			
		||||
       commit id: "Normal Commit with tag" tag: "v1.0.0"
 | 
			
		||||
       commit id: "Reverse Commit with tag" type: REVERSE tag: "RC_1"
 | 
			
		||||
       commit id: "Hightlight Commit" type: HIGHLIGHT  tag: "8.8.4"
 | 
			
		||||
       commit id: "Highlight Commit" type: HIGHLIGHT  tag: "8.8.4"
 | 
			
		||||
      `,
 | 
			
		||||
      {}
 | 
			
		||||
    );
 | 
			
		||||
@@ -434,7 +434,7 @@ gitGraph
 | 
			
		||||
      {}
 | 
			
		||||
    );
 | 
			
		||||
  });
 | 
			
		||||
  it('22: should render a simple gitgraph with more than 8 branchs &  overriding variables | Vertical Branch', () => {
 | 
			
		||||
  it('22: should render a simple gitgraph with more than 8 branches &  overriding variables | Vertical Branch', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
      `%%{init: { 'logLevel': 'debug', 'theme': 'default' , 'themeVariables': {
 | 
			
		||||
        'gitBranchLabel0': '#ffffff',
 | 
			
		||||
 
 | 
			
		||||
@@ -160,4 +160,70 @@ describe('Quadrant Chart', () => {
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
  it('should render x-axis labels in the center, if x-axis has two labels', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
      `
 | 
			
		||||
  quadrantChart
 | 
			
		||||
    title Reach and engagement of campaigns
 | 
			
		||||
    x-axis Low Reach --> High Reach
 | 
			
		||||
    y-axis Low Engagement
 | 
			
		||||
    quadrant-1 We should expand
 | 
			
		||||
    quadrant-2 Need to promote
 | 
			
		||||
    quadrant-3 Re-evaluate
 | 
			
		||||
    quadrant-4 May be improved
 | 
			
		||||
    Campaign A: [0.3, 0.6]
 | 
			
		||||
    Campaign B: [0.45, 0.23]
 | 
			
		||||
    Campaign C: [0.57, 0.69]
 | 
			
		||||
    Campaign D: [0.78, 0.34]
 | 
			
		||||
    Campaign E: [0.40, 0.34]
 | 
			
		||||
    Campaign F: [0.35, 0.78]
 | 
			
		||||
      `,
 | 
			
		||||
      {}
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
  it('should render y-axis labels in the center, if y-axis has two labels', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
      `
 | 
			
		||||
  quadrantChart
 | 
			
		||||
    title Reach and engagement of campaigns
 | 
			
		||||
    x-axis Low Reach
 | 
			
		||||
    y-axis Low Engagement --> High Engagement
 | 
			
		||||
    quadrant-1 We should expand
 | 
			
		||||
    quadrant-2 Need to promote
 | 
			
		||||
    quadrant-3 Re-evaluate
 | 
			
		||||
    quadrant-4 May be improved
 | 
			
		||||
    Campaign A: [0.3, 0.6]
 | 
			
		||||
    Campaign B: [0.45, 0.23]
 | 
			
		||||
    Campaign C: [0.57, 0.69]
 | 
			
		||||
    Campaign D: [0.78, 0.34]
 | 
			
		||||
    Campaign E: [0.40, 0.34]
 | 
			
		||||
    Campaign F: [0.35, 0.78]
 | 
			
		||||
      `,
 | 
			
		||||
      {}
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
  it('should render both axes labels on the left and bottom, if both axes have only one label', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
      `
 | 
			
		||||
  quadrantChart
 | 
			
		||||
    title Reach and engagement of campaigns
 | 
			
		||||
    x-axis Reach -->
 | 
			
		||||
    y-axis Engagement -->
 | 
			
		||||
    quadrant-1 We should expand
 | 
			
		||||
    quadrant-2 Need to promote
 | 
			
		||||
    quadrant-3 Re-evaluate
 | 
			
		||||
    quadrant-4 May be improved
 | 
			
		||||
    Campaign A: [0.3, 0.6]
 | 
			
		||||
    Campaign B: [0.45, 0.23]
 | 
			
		||||
    Campaign C: [0.57, 0.69]
 | 
			
		||||
    Campaign D: [0.78, 0.34]
 | 
			
		||||
    Campaign E: [0.40, 0.34]
 | 
			
		||||
    Campaign F: [0.35, 0.78]
 | 
			
		||||
      `,
 | 
			
		||||
      {}
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
@@ -57,7 +57,7 @@ describe('Timeline diagram', () => {
 | 
			
		||||
      {}
 | 
			
		||||
    );
 | 
			
		||||
  });
 | 
			
		||||
  it('5: should render a simple timeline with directive overriden colors', () => {
 | 
			
		||||
  it('5: should render a simple timeline with directive overridden colors', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
      ` %%{init: { 'logLevel': 'debug', 'theme': 'default' , 'themeVariables': {
 | 
			
		||||
              'cScale0': '#ff0000',
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										322
									
								
								cypress/integration/rendering/xyChart.spec.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										322
									
								
								cypress/integration/rendering/xyChart.spec.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,322 @@
 | 
			
		||||
import { imgSnapshotTest, renderGraph } from '../../helpers/util.ts';
 | 
			
		||||
 | 
			
		||||
describe('XY Chart', () => {
 | 
			
		||||
  it('should render the simplest possible chart', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
      `
 | 
			
		||||
      xychart-beta
 | 
			
		||||
        line [10, 30, 20]
 | 
			
		||||
      `,
 | 
			
		||||
      {}
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
  it('Should render a complete chart', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
      `
 | 
			
		||||
      xychart-beta
 | 
			
		||||
        title "Sales Revenue"
 | 
			
		||||
        x-axis Months [jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec]
 | 
			
		||||
        y-axis "Revenue (in $)" 4000 --> 11000
 | 
			
		||||
        bar [5000, 6000, 7500, 8200, 9500, 10500, 11000, 10200, 9200, 8500, 7000, 6000]
 | 
			
		||||
        line [5000, 6000, 7500, 8200, 9500, 10500, 11000, 10200, 9200, 8500, 7000, 6000]
 | 
			
		||||
      `,
 | 
			
		||||
      {}
 | 
			
		||||
    );
 | 
			
		||||
  });
 | 
			
		||||
  it('Should render a chart without title', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
      `
 | 
			
		||||
      xychart-beta
 | 
			
		||||
        x-axis Months [jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec]
 | 
			
		||||
        y-axis "Revenue (in $)" 4000 --> 11000
 | 
			
		||||
        bar [5000, 6000, 7500, 8200, 9500, 10500, 11000, 10200, 9200, 8500, 7000, 6000]
 | 
			
		||||
        line [5000, 6000, 7500, 8200, 9500, 10500, 11000, 10200, 9200, 8500, 7000, 6000]
 | 
			
		||||
      `,
 | 
			
		||||
      {}
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
  it('y-axis title not required', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
      `
 | 
			
		||||
      xychart-beta
 | 
			
		||||
        x-axis Months [jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec]
 | 
			
		||||
        y-axis 4000 --> 11000
 | 
			
		||||
        bar [5000, 6000, 7500, 8200, 9500, 10500, 11000, 10200, 9200, 8500, 7000, 6000]
 | 
			
		||||
        line [5000, 6000, 7500, 8200, 9500, 10500, 11000, 10200, 9200, 8500, 7000, 6000]
 | 
			
		||||
      `,
 | 
			
		||||
      {}
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
  it('Should render a chart without y-axis with different range', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
      `
 | 
			
		||||
      xychart-beta
 | 
			
		||||
        x-axis Months [jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec]
 | 
			
		||||
        bar [5000, 6000, 7500, 8200, 9500, 10500, 14000, 3200, 9200, 9900, 3400, 6000]
 | 
			
		||||
        line [2000, 7000, 6500, 9200, 9500, 7500, 11000, 10200, 3200, 8500, 7000, 8800]
 | 
			
		||||
      `,
 | 
			
		||||
      {}
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
  it('x axis title not required', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
      `
 | 
			
		||||
      xychart-beta
 | 
			
		||||
        x-axis [jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec]
 | 
			
		||||
        bar [5000, 6000, 7500, 8200, 9500, 10500, 14000, 3200, 9200, 9900, 3400, 6000]
 | 
			
		||||
        line [2000, 7000, 6500, 9200, 9500, 7500, 11000, 10200, 3200, 8500, 7000, 8800]
 | 
			
		||||
      `,
 | 
			
		||||
      {}
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
  it('Multiple plots can be rendered', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
      `
 | 
			
		||||
      xychart-beta
 | 
			
		||||
        line [23, 46, 77, 34]
 | 
			
		||||
        line [45, 32, 33, 12]
 | 
			
		||||
        bar [87, 54, 99, 85]
 | 
			
		||||
        line [78, 88, 22, 4]
 | 
			
		||||
        line [22, 29, 75, 33]
 | 
			
		||||
        bar [52, 96, 35, 10]
 | 
			
		||||
      `,
 | 
			
		||||
      {}
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
  it('Decimals and negative numbers are supported', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
      `
 | 
			
		||||
      xychart-beta
 | 
			
		||||
        y-axis -2.4 --> 3.5
 | 
			
		||||
        line [+1.3, .6, 2.4, -.34]
 | 
			
		||||
      `,
 | 
			
		||||
      {}
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
  it('Render spark line with "plotReservedSpacePercent"', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
      `
 | 
			
		||||
      ---
 | 
			
		||||
      config:
 | 
			
		||||
        theme: dark
 | 
			
		||||
        xyChart:
 | 
			
		||||
          width: 200
 | 
			
		||||
          height: 20
 | 
			
		||||
          plotReservedSpacePercent: 100
 | 
			
		||||
      ---
 | 
			
		||||
      xychart-beta
 | 
			
		||||
        line [5000, 9000, 7500, 6200, 9500, 5500, 11000, 8200, 9200, 9500, 7000, 8800]
 | 
			
		||||
      `,
 | 
			
		||||
      {}
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
  it('Render spark bar without displaying other property', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
      `
 | 
			
		||||
      ---
 | 
			
		||||
      config:
 | 
			
		||||
        theme: dark
 | 
			
		||||
        xyChart:
 | 
			
		||||
          width: 200
 | 
			
		||||
          height: 20
 | 
			
		||||
          xAxis:
 | 
			
		||||
            showLabel: false
 | 
			
		||||
            showTitle: false
 | 
			
		||||
            showTick: false
 | 
			
		||||
            showAxisLine: false
 | 
			
		||||
          yAxis:
 | 
			
		||||
            showLabel: false
 | 
			
		||||
            showTitle: false
 | 
			
		||||
            showTick: false
 | 
			
		||||
            showAxisLine: false
 | 
			
		||||
      ---
 | 
			
		||||
      xychart-beta
 | 
			
		||||
        bar [5000, 9000, 7500, 6200, 9500, 5500, 11000, 8200, 9200, 9500, 7000, 8800]
 | 
			
		||||
      `,
 | 
			
		||||
      {}
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
  it('Should use all the config from directive', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
      `
 | 
			
		||||
      %%{init: {"xyChart": {"width": 1000, "height": 600, "titlePadding": 5, "titleFontSize": 10, "xAxis": {"labelFontSize": "20", "labelPadding": 10, "titleFontSize": 30, "titlePadding": 20, "tickLength": 10, "tickWidth": 5},  "yAxis": {"labelFontSize": "20", "labelPadding": 10, "titleFontSize": 30, "titlePadding": 20, "tickLength": 10, "tickWidth": 5}, "plotBorderWidth": 5, "chartOrientation": "horizontal", "plotReservedSpacePercent": 60  }}}%%
 | 
			
		||||
      xychart-beta
 | 
			
		||||
        title "Sales Revenue"
 | 
			
		||||
        x-axis Months [jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec]
 | 
			
		||||
        y-axis "Revenue (in $)" 4000 --> 11000
 | 
			
		||||
        bar [5000, 6000, 7500, 8200, 9500, 10500, 11000, 10200, 9200, 8500, 7000, 6000]
 | 
			
		||||
        line [5000, 6000, 7500, 8200, 9500, 10500, 11000, 10200, 9200, 8500, 7000, 6000]
 | 
			
		||||
      `,
 | 
			
		||||
      {}
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
  it('Should use all the config from yaml', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
      `
 | 
			
		||||
      ---
 | 
			
		||||
      config:
 | 
			
		||||
        theme: forest
 | 
			
		||||
        xyChart:
 | 
			
		||||
          width: 1000
 | 
			
		||||
          height: 600
 | 
			
		||||
          titlePadding: 5
 | 
			
		||||
          titleFontSize: 10
 | 
			
		||||
          xAxis:
 | 
			
		||||
            labelFontSize: 20
 | 
			
		||||
            labelPadding: 10
 | 
			
		||||
            titleFontSize: 30
 | 
			
		||||
            titlePadding: 20
 | 
			
		||||
            tickLength: 10
 | 
			
		||||
            tickWidth: 5
 | 
			
		||||
            axisLineWidth: 5
 | 
			
		||||
          yAxis:
 | 
			
		||||
            labelFontSize: 20
 | 
			
		||||
            labelPadding: 10
 | 
			
		||||
            titleFontSize: 30
 | 
			
		||||
            titlePadding: 20
 | 
			
		||||
            tickLength: 10
 | 
			
		||||
            tickWidth: 5
 | 
			
		||||
            axisLineWidth: 5
 | 
			
		||||
          chartOrientation: horizontal
 | 
			
		||||
          plotReservedSpacePercent: 60
 | 
			
		||||
      ---
 | 
			
		||||
      xychart-beta
 | 
			
		||||
        title "Sales Revenue"
 | 
			
		||||
        x-axis Months [jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec]
 | 
			
		||||
        y-axis "Revenue (in $)" 4000 --> 11000
 | 
			
		||||
        bar [5000, 6000, 7500, 8200, 9500, 10500, 11000, 10200, 9200, 8500, 7000, 6000]
 | 
			
		||||
        line [5000, 6000, 7500, 8200, 9500, 10500, 11000, 10200, 9200, 8500, 7000, 6000]
 | 
			
		||||
      `,
 | 
			
		||||
      {}
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
  it('Render with show axis title false', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
      `
 | 
			
		||||
      ---
 | 
			
		||||
      config:
 | 
			
		||||
        xyChart:
 | 
			
		||||
          xAxis:
 | 
			
		||||
            showTitle: false
 | 
			
		||||
          yAxis:
 | 
			
		||||
            showTitle: false
 | 
			
		||||
      ---
 | 
			
		||||
      xychart-beta
 | 
			
		||||
        title "Sales Revenue"
 | 
			
		||||
        x-axis Months [jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec]
 | 
			
		||||
        y-axis "Revenue (in $)" 4000 --> 11000
 | 
			
		||||
        bar [5000, 6000, 7500, 8200, 9500, 10500, 11000, 10200, 9200, 8500, 7000, 6000]
 | 
			
		||||
        line [5000, 6000, 7500, 8200, 9500, 10500, 11000, 10200, 9200, 8500, 7000, 6000]
 | 
			
		||||
      `,
 | 
			
		||||
      {}
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
  it('Render with show axis label false', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
      `
 | 
			
		||||
      ---
 | 
			
		||||
      config:
 | 
			
		||||
        xyChart:
 | 
			
		||||
          xAxis:
 | 
			
		||||
            showLabel: false
 | 
			
		||||
          yAxis:
 | 
			
		||||
            showLabel: false
 | 
			
		||||
      ---
 | 
			
		||||
      xychart-beta
 | 
			
		||||
        title "Sales Revenue"
 | 
			
		||||
        x-axis Months [jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec]
 | 
			
		||||
        y-axis "Revenue (in $)" 4000 --> 11000
 | 
			
		||||
        bar [5000, 6000, 7500, 8200, 9500, 10500, 11000, 10200, 9200, 8500, 7000, 6000]
 | 
			
		||||
        line [5000, 6000, 7500, 8200, 9500, 10500, 11000, 10200, 9200, 8500, 7000, 6000]
 | 
			
		||||
      `,
 | 
			
		||||
      {}
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
  it('Render with show axis tick false', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
      `
 | 
			
		||||
      ---
 | 
			
		||||
      config:
 | 
			
		||||
        xyChart:
 | 
			
		||||
          xAxis:
 | 
			
		||||
            showTick: false
 | 
			
		||||
          yAxis:
 | 
			
		||||
            showTick: false
 | 
			
		||||
      ---
 | 
			
		||||
      xychart-beta
 | 
			
		||||
        title "Sales Revenue"
 | 
			
		||||
        x-axis Months [jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec]
 | 
			
		||||
        y-axis "Revenue (in $)" 4000 --> 11000
 | 
			
		||||
        bar [5000, 6000, 7500, 8200, 9500, 10500, 11000, 10200, 9200, 8500, 7000, 6000]
 | 
			
		||||
        line [5000, 6000, 7500, 8200, 9500, 10500, 11000, 10200, 9200, 8500, 7000, 6000]
 | 
			
		||||
      `,
 | 
			
		||||
      {}
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
  it('Render with show axis line false', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
      `
 | 
			
		||||
      ---
 | 
			
		||||
      config:
 | 
			
		||||
        xyChart:
 | 
			
		||||
          xAxis:
 | 
			
		||||
            showAxisLine: false
 | 
			
		||||
          yAxis:
 | 
			
		||||
            showAxisLine: false
 | 
			
		||||
      ---
 | 
			
		||||
      xychart-beta
 | 
			
		||||
        title "Sales Revenue"
 | 
			
		||||
        x-axis Months [jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec]
 | 
			
		||||
        y-axis "Revenue (in $)" 4000 --> 11000
 | 
			
		||||
        bar [5000, 6000, 7500, 8200, 9500, 10500, 11000, 10200, 9200, 8500, 7000, 6000]
 | 
			
		||||
        line [5000, 6000, 7500, 8200, 9500, 10500, 11000, 10200, 9200, 8500, 7000, 6000]
 | 
			
		||||
      `,
 | 
			
		||||
      {}
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
  it('Render all the theme color', () => {
 | 
			
		||||
    imgSnapshotTest(
 | 
			
		||||
      `
 | 
			
		||||
      ---
 | 
			
		||||
      config:
 | 
			
		||||
        themeVariables:
 | 
			
		||||
          xyChart:
 | 
			
		||||
            titleColor: "#ff0000"
 | 
			
		||||
            backgroundColor: "#f0f8ff"
 | 
			
		||||
            yAxisLabelColor: "#ee82ee"
 | 
			
		||||
            yAxisTitleColor: "#7fffd4"
 | 
			
		||||
            yAxisTickColor: "#87ceeb"
 | 
			
		||||
            yAxisLineColor: "#ff6347"
 | 
			
		||||
            xAxisLabelColor: "#7fffd4"
 | 
			
		||||
            xAxisTitleColor: "#ee82ee"
 | 
			
		||||
            xAxisTickColor: "#ff6347"
 | 
			
		||||
            xAxisLineColor: "#87ceeb"
 | 
			
		||||
            plotColorPalette: "#008000, #faba63"
 | 
			
		||||
      ---
 | 
			
		||||
      xychart-beta
 | 
			
		||||
        title "Sales Revenue"
 | 
			
		||||
        x-axis Months [jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec]
 | 
			
		||||
        y-axis "Revenue (in $)" 4000 --> 11000
 | 
			
		||||
        bar [5000, 6000, 7500, 8200, 9500, 10500, 11000, 10200, 9200, 8500, 7000, 6000]
 | 
			
		||||
        line [5000, 6000, 7500, 8200, 9500, 10500, 11000, 10200, 9200, 8500, 7000, 6000]
 | 
			
		||||
      `,
 | 
			
		||||
      {}
 | 
			
		||||
    );
 | 
			
		||||
    cy.get('svg');
 | 
			
		||||
  });
 | 
			
		||||
});
 | 
			
		||||
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							@@ -58,12 +58,21 @@
 | 
			
		||||
  </head>
 | 
			
		||||
  <body>
 | 
			
		||||
    <pre id="diagram" class="mermaid">
 | 
			
		||||
      flowchart
 | 
			
		||||
        classDef mainCategories fill:#f9d5e5, stroke:#233d4d,stroke-width:2px, font-weight:bold;
 | 
			
		||||
        CS(Customer Awareness Journey):::mainCategories
 | 
			
		||||
      </pre
 | 
			
		||||
    >
 | 
			
		||||
    <pre id="diagram" class="mermaid">
 | 
			
		||||
flowchart TB
 | 
			
		||||
    C & D & E & F & G & H & I & J & K & L & M & N & O & P & Q & R & S & T & U & V & W & X & Y & Z & A1 & A2 & A3 & A4 & A5 & A6 & A7 & A8
 | 
			
		||||
      ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------->
 | 
			
		||||
    C & D & E & F & G & H & I & J & K & L & M & N & O & P & Q & R & S & T & U & V & W & X & Y & Z & A1 & A2 & A3 & A4 & A5 & A6 & A7 & A8
 | 
			
		||||
 | 
			
		||||
    </pre>
 | 
			
		||||
    <pre id="diagram" class="mermaid2">
 | 
			
		||||
    flowchart TB
 | 
			
		||||
      A & A & A & A & A & A & A & A --->  C & D & E & F & G & H & I & J & K & L & M & N & O & P & Q & R & S & T & U & V & W & X & Y & Z
 | 
			
		||||
    </pre>
 | 
			
		||||
    <pre id="diagram" class="mermaid2">
 | 
			
		||||
    flowchart TB
 | 
			
		||||
      A1 & A2 & A3 & A4 & A5 & A6 & A7 & A8 -->  C & D & E & F & G & H & I & J & K & L & M & N & O & P & Q & R & S & T & U & V & W & X & Y & Z
 | 
			
		||||
    </pre>
 | 
			
		||||
    <pre id="diagram" class="mermaid2">
 | 
			
		||||
flowchart
 | 
			
		||||
Node1:::class1 --> Node2:::class2
 | 
			
		||||
Node1:::class1 --> Node3:::class2
 | 
			
		||||
@@ -441,6 +450,7 @@ mindmap
 | 
			
		||||
          messageFontFamily: 'courier',
 | 
			
		||||
        },
 | 
			
		||||
        fontSize: 16,
 | 
			
		||||
        logLevel: 0,
 | 
			
		||||
      });
 | 
			
		||||
      function callback() {
 | 
			
		||||
        alert('It worked');
 | 
			
		||||
 
 | 
			
		||||
@@ -42,7 +42,8 @@
 | 
			
		||||
    </pre>
 | 
			
		||||
    <script type="module">
 | 
			
		||||
      import mermaid from './mermaid.esm.mjs';
 | 
			
		||||
      mermaid.initialize({ startOnLoad: true, logLevel: 0 });
 | 
			
		||||
      mermaid.initialize({ startOnLoad: false, logLevel: 0 });
 | 
			
		||||
      await mermaid.run();
 | 
			
		||||
 | 
			
		||||
      if (window.Cypress) {
 | 
			
		||||
        window.rendered = true;
 | 
			
		||||
 
 | 
			
		||||
@@ -1,15 +1,6 @@
 | 
			
		||||
<html>
 | 
			
		||||
  <head>
 | 
			
		||||
    <link href="https://fonts.googleapis.com/css?family=Montserrat&display=swap" rel="stylesheet" />
 | 
			
		||||
    <link href="https://unpkg.com/tailwindcss@^1.0/dist/tailwind.min.css" rel="stylesheet" />
 | 
			
		||||
    <link
 | 
			
		||||
      rel="stylesheet"
 | 
			
		||||
      href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"
 | 
			
		||||
    />
 | 
			
		||||
    <link
 | 
			
		||||
      href="https://fonts.googleapis.com/css?family=Noto+Sans+SC&display=swap"
 | 
			
		||||
      rel="stylesheet"
 | 
			
		||||
    />
 | 
			
		||||
    <style>
 | 
			
		||||
      body {
 | 
			
		||||
        /* background: rgb(221, 208, 208); */
 | 
			
		||||
@@ -122,26 +113,21 @@
 | 
			
		||||
 | 
			
		||||
    <script type="module">
 | 
			
		||||
      import mermaid from './mermaid.esm.mjs';
 | 
			
		||||
      mermaid.parseError = function (err, hash) {
 | 
			
		||||
        // console.error('Mermaid error: ', err);
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      mermaid.initialize({
 | 
			
		||||
        // theme: 'dark',
 | 
			
		||||
        // theme: 'dark',
 | 
			
		||||
        // arrowMarkerAbsolute: true,
 | 
			
		||||
        // themeCSS: '.edgePath .path {stroke: red;} .arrowheadPath {fill: red;}',
 | 
			
		||||
        logLevel: 0,
 | 
			
		||||
        // flowchart: { useMaxWidth: true },
 | 
			
		||||
        graph: { curve: 'cardinal', htmlLabels: false },
 | 
			
		||||
        // gantt: { axisFormat: '%m/%d/%Y' },
 | 
			
		||||
        sequence: { actorMargin: 50, showSequenceNumbers: true },
 | 
			
		||||
        // sequenceDiagram: { actorMargin: 300 } // deprecated
 | 
			
		||||
        fontFamily: '"arial", sans-serif',
 | 
			
		||||
        curve: 'cardinal',
 | 
			
		||||
        securityLevel: 'strict',
 | 
			
		||||
        startOnLoad: false,
 | 
			
		||||
      });
 | 
			
		||||
      function callback() {
 | 
			
		||||
        alert('It worked');
 | 
			
		||||
 | 
			
		||||
      await mermaid.run();
 | 
			
		||||
 | 
			
		||||
      if (window.Cypress) {
 | 
			
		||||
        window.rendered = true;
 | 
			
		||||
      }
 | 
			
		||||
    </script>
 | 
			
		||||
  </body>
 | 
			
		||||
 
 | 
			
		||||
@@ -42,6 +42,16 @@
 | 
			
		||||
        font-size: 72px;
 | 
			
		||||
      }
 | 
			
		||||
    </style>
 | 
			
		||||
    <script>
 | 
			
		||||
      function xssAttack() {
 | 
			
		||||
        const div = document.createElement('div');
 | 
			
		||||
        div.id = 'the-malware';
 | 
			
		||||
        div.className = 'malware';
 | 
			
		||||
        div.innerHTML = 'XSS Succeeded';
 | 
			
		||||
        document.getElementsByTagName('body')[0].appendChild(div);
 | 
			
		||||
        throw new Error('XSS Succeeded');
 | 
			
		||||
      }
 | 
			
		||||
    </script>
 | 
			
		||||
  </head>
 | 
			
		||||
  <body>
 | 
			
		||||
    <div>Security check</div>
 | 
			
		||||
 
 | 
			
		||||
@@ -42,6 +42,16 @@
 | 
			
		||||
        font-size: 72px;
 | 
			
		||||
      }
 | 
			
		||||
    </style>
 | 
			
		||||
    <script>
 | 
			
		||||
      function xssAttack() {
 | 
			
		||||
        const div = document.createElement('div');
 | 
			
		||||
        div.id = 'the-malware';
 | 
			
		||||
        div.className = 'malware';
 | 
			
		||||
        div.innerHTML = 'XSS Succeeded';
 | 
			
		||||
        document.getElementsByTagName('body')[0].appendChild(div);
 | 
			
		||||
        throw new Error('XSS Succeeded');
 | 
			
		||||
      }
 | 
			
		||||
    </script>
 | 
			
		||||
  </head>
 | 
			
		||||
  <body>
 | 
			
		||||
    <div>Security check</div>
 | 
			
		||||
 
 | 
			
		||||
@@ -42,6 +42,16 @@
 | 
			
		||||
        font-size: 72px;
 | 
			
		||||
      }
 | 
			
		||||
    </style>
 | 
			
		||||
    <script>
 | 
			
		||||
      function xssAttack() {
 | 
			
		||||
        const div = document.createElement('div');
 | 
			
		||||
        div.id = 'the-malware';
 | 
			
		||||
        div.className = 'malware';
 | 
			
		||||
        div.innerHTML = 'XSS Succeeded';
 | 
			
		||||
        document.getElementsByTagName('body')[0].appendChild(div);
 | 
			
		||||
        throw new Error('XSS Succeeded');
 | 
			
		||||
      }
 | 
			
		||||
    </script>
 | 
			
		||||
  </head>
 | 
			
		||||
  <body>
 | 
			
		||||
    <div>Security check</div>
 | 
			
		||||
 
 | 
			
		||||
@@ -42,6 +42,16 @@
 | 
			
		||||
        font-size: 72px;
 | 
			
		||||
      }
 | 
			
		||||
    </style>
 | 
			
		||||
    <script>
 | 
			
		||||
      function xssAttack() {
 | 
			
		||||
        const div = document.createElement('div');
 | 
			
		||||
        div.id = 'the-malware';
 | 
			
		||||
        div.className = 'malware';
 | 
			
		||||
        div.innerHTML = 'XSS Succeeded';
 | 
			
		||||
        document.getElementsByTagName('body')[0].appendChild(div);
 | 
			
		||||
        throw new Error('XSS Succeeded');
 | 
			
		||||
      }
 | 
			
		||||
    </script>
 | 
			
		||||
  </head>
 | 
			
		||||
  <body>
 | 
			
		||||
    <div>Security check</div>
 | 
			
		||||
 
 | 
			
		||||
@@ -42,6 +42,16 @@
 | 
			
		||||
        font-size: 72px;
 | 
			
		||||
      }
 | 
			
		||||
    </style>
 | 
			
		||||
    <script>
 | 
			
		||||
      function xssAttack() {
 | 
			
		||||
        const div = document.createElement('div');
 | 
			
		||||
        div.id = 'the-malware';
 | 
			
		||||
        div.className = 'malware';
 | 
			
		||||
        div.innerHTML = 'XSS Succeeded';
 | 
			
		||||
        document.getElementsByTagName('body')[0].appendChild(div);
 | 
			
		||||
        throw new Error('XSS Succeeded');
 | 
			
		||||
      }
 | 
			
		||||
    </script>
 | 
			
		||||
  </head>
 | 
			
		||||
  <body>
 | 
			
		||||
    <div>Security check</div>
 | 
			
		||||
 
 | 
			
		||||
@@ -42,6 +42,16 @@
 | 
			
		||||
        font-size: 72px;
 | 
			
		||||
      }
 | 
			
		||||
    </style>
 | 
			
		||||
    <script>
 | 
			
		||||
      function xssAttack() {
 | 
			
		||||
        const div = document.createElement('div');
 | 
			
		||||
        div.id = 'the-malware';
 | 
			
		||||
        div.className = 'malware';
 | 
			
		||||
        div.innerHTML = 'XSS Succeeded';
 | 
			
		||||
        document.getElementsByTagName('body')[0].appendChild(div);
 | 
			
		||||
        throw new Error('XSS Succeeded');
 | 
			
		||||
      }
 | 
			
		||||
    </script>
 | 
			
		||||
  </head>
 | 
			
		||||
  <body>
 | 
			
		||||
    <div>Security check</div>
 | 
			
		||||
 
 | 
			
		||||
@@ -42,6 +42,16 @@
 | 
			
		||||
        font-size: 72px;
 | 
			
		||||
      }
 | 
			
		||||
    </style>
 | 
			
		||||
    <script>
 | 
			
		||||
      function xssAttack() {
 | 
			
		||||
        const div = document.createElement('div');
 | 
			
		||||
        div.id = 'the-malware';
 | 
			
		||||
        div.className = 'malware';
 | 
			
		||||
        div.innerHTML = 'XSS Succeeded';
 | 
			
		||||
        document.getElementsByTagName('body')[0].appendChild(div);
 | 
			
		||||
        throw new Error('XSS Succeeded');
 | 
			
		||||
      }
 | 
			
		||||
    </script>
 | 
			
		||||
  </head>
 | 
			
		||||
  <body>
 | 
			
		||||
    <div>Security check</div>
 | 
			
		||||
 
 | 
			
		||||
@@ -42,6 +42,16 @@
 | 
			
		||||
        font-size: 72px;
 | 
			
		||||
      }
 | 
			
		||||
    </style>
 | 
			
		||||
    <script>
 | 
			
		||||
      function xssAttack() {
 | 
			
		||||
        const div = document.createElement('div');
 | 
			
		||||
        div.id = 'the-malware';
 | 
			
		||||
        div.className = 'malware';
 | 
			
		||||
        div.innerHTML = 'XSS Succeeded';
 | 
			
		||||
        document.getElementsByTagName('body')[0].appendChild(div);
 | 
			
		||||
        throw new Error('XSS Succeeded');
 | 
			
		||||
      }
 | 
			
		||||
    </script>
 | 
			
		||||
  </head>
 | 
			
		||||
  <body>
 | 
			
		||||
    <div>Security check</div>
 | 
			
		||||
 
 | 
			
		||||
@@ -42,6 +42,16 @@
 | 
			
		||||
        font-size: 72px;
 | 
			
		||||
      }
 | 
			
		||||
    </style>
 | 
			
		||||
    <script>
 | 
			
		||||
      function xssAttack() {
 | 
			
		||||
        const div = document.createElement('div');
 | 
			
		||||
        div.id = 'the-malware';
 | 
			
		||||
        div.className = 'malware';
 | 
			
		||||
        div.innerHTML = 'XSS Succeeded';
 | 
			
		||||
        document.getElementsByTagName('body')[0].appendChild(div);
 | 
			
		||||
        throw new Error('XSS Succeeded');
 | 
			
		||||
      }
 | 
			
		||||
    </script>
 | 
			
		||||
  </head>
 | 
			
		||||
  <body>
 | 
			
		||||
    <div>Security check</div>
 | 
			
		||||
 
 | 
			
		||||
@@ -42,6 +42,16 @@
 | 
			
		||||
        font-size: 72px;
 | 
			
		||||
      }
 | 
			
		||||
    </style>
 | 
			
		||||
    <script>
 | 
			
		||||
      function xssAttack() {
 | 
			
		||||
        const div = document.createElement('div');
 | 
			
		||||
        div.id = 'the-malware';
 | 
			
		||||
        div.className = 'malware';
 | 
			
		||||
        div.innerHTML = 'XSS Succeeded';
 | 
			
		||||
        document.getElementsByTagName('body')[0].appendChild(div);
 | 
			
		||||
        throw new Error('XSS Succeeded');
 | 
			
		||||
      }
 | 
			
		||||
    </script>
 | 
			
		||||
  </head>
 | 
			
		||||
  <body>
 | 
			
		||||
    <div>Security check</div>
 | 
			
		||||
 
 | 
			
		||||
@@ -42,6 +42,16 @@
 | 
			
		||||
        font-size: 72px;
 | 
			
		||||
      }
 | 
			
		||||
    </style>
 | 
			
		||||
    <script>
 | 
			
		||||
      function xssAttack() {
 | 
			
		||||
        const div = document.createElement('div');
 | 
			
		||||
        div.id = 'the-malware';
 | 
			
		||||
        div.className = 'malware';
 | 
			
		||||
        div.innerHTML = 'XSS Succeeded';
 | 
			
		||||
        document.getElementsByTagName('body')[0].appendChild(div);
 | 
			
		||||
        throw new Error('XSS Succeeded');
 | 
			
		||||
      }
 | 
			
		||||
    </script>
 | 
			
		||||
  </head>
 | 
			
		||||
  <body>
 | 
			
		||||
    <div>Security check</div>
 | 
			
		||||
 
 | 
			
		||||
@@ -42,6 +42,16 @@
 | 
			
		||||
        font-size: 72px;
 | 
			
		||||
      }
 | 
			
		||||
    </style>
 | 
			
		||||
    <script>
 | 
			
		||||
      function xssAttack() {
 | 
			
		||||
        const div = document.createElement('div');
 | 
			
		||||
        div.id = 'the-malware';
 | 
			
		||||
        div.className = 'malware';
 | 
			
		||||
        div.innerHTML = 'XSS Succeeded';
 | 
			
		||||
        document.getElementsByTagName('body')[0].appendChild(div);
 | 
			
		||||
        throw new Error('XSS Succeeded');
 | 
			
		||||
      }
 | 
			
		||||
    </script>
 | 
			
		||||
  </head>
 | 
			
		||||
  <body>
 | 
			
		||||
    <div>Security check</div>
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										109
									
								
								cypress/platform/xss24.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										109
									
								
								cypress/platform/xss24.html
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,109 @@
 | 
			
		||||
<html>
 | 
			
		||||
  <head>
 | 
			
		||||
    <link href="https://fonts.googleapis.com/css?family=Montserrat&display=swap" rel="stylesheet" />
 | 
			
		||||
    <link href="https://unpkg.com/tailwindcss@^1.0/dist/tailwind.min.css" rel="stylesheet" />
 | 
			
		||||
    <link
 | 
			
		||||
      rel="stylesheet"
 | 
			
		||||
      href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"
 | 
			
		||||
    />
 | 
			
		||||
    <link
 | 
			
		||||
      href="https://fonts.googleapis.com/css?family=Noto+Sans+SC&display=swap"
 | 
			
		||||
      rel="stylesheet"
 | 
			
		||||
    />
 | 
			
		||||
    <style>
 | 
			
		||||
      body {
 | 
			
		||||
        /* background: rgb(221, 208, 208); */
 | 
			
		||||
        /* background:#333; */
 | 
			
		||||
        font-family: 'Arial';
 | 
			
		||||
        /* font-size: 18px !important; */
 | 
			
		||||
      }
 | 
			
		||||
      h1 {
 | 
			
		||||
        color: grey;
 | 
			
		||||
      }
 | 
			
		||||
      .mermaid2 {
 | 
			
		||||
        display: none;
 | 
			
		||||
      }
 | 
			
		||||
      .mermaid svg {
 | 
			
		||||
        /* font-size: 18px !important; */
 | 
			
		||||
      }
 | 
			
		||||
      .malware {
 | 
			
		||||
        position: fixed;
 | 
			
		||||
        bottom: 0;
 | 
			
		||||
        left: 0;
 | 
			
		||||
        right: 0;
 | 
			
		||||
        height: 150px;
 | 
			
		||||
        background: red;
 | 
			
		||||
        color: black;
 | 
			
		||||
        display: flex;
 | 
			
		||||
        display: flex;
 | 
			
		||||
        justify-content: center;
 | 
			
		||||
        align-items: center;
 | 
			
		||||
        font-family: monospace;
 | 
			
		||||
        font-size: 72px;
 | 
			
		||||
      }
 | 
			
		||||
    </style>
 | 
			
		||||
    <script>
 | 
			
		||||
      function xssAttack() {
 | 
			
		||||
        const div = document.createElement('div');
 | 
			
		||||
        div.id = 'the-malware';
 | 
			
		||||
        div.className = 'malware';
 | 
			
		||||
        div.innerHTML = 'XSS Succeeded';
 | 
			
		||||
        document.getElementsByTagName('body')[0].appendChild(div);
 | 
			
		||||
        throw new Error('XSS Succeeded');
 | 
			
		||||
      }
 | 
			
		||||
    </script>
 | 
			
		||||
  </head>
 | 
			
		||||
  <body>
 | 
			
		||||
    <div>Security check</div>
 | 
			
		||||
    <div class="flex">
 | 
			
		||||
      <div id="diagram" class="mermaid"></div>
 | 
			
		||||
      <div id="res" class=""></div>
 | 
			
		||||
    </div>
 | 
			
		||||
    <script type="module">
 | 
			
		||||
      import mermaid from './mermaid.esm.mjs';
 | 
			
		||||
      mermaid.parseError = function (err, hash) {
 | 
			
		||||
        // console.error('Mermaid error: ', err);
 | 
			
		||||
      };
 | 
			
		||||
      mermaid.initialize({
 | 
			
		||||
        theme: 'forest',
 | 
			
		||||
        arrowMarkerAbsolute: true,
 | 
			
		||||
        // themeCSS: '.edgePath .path {stroke: red;} .arrowheadPath {fill: red;}',
 | 
			
		||||
        logLevel: 0,
 | 
			
		||||
        state: {
 | 
			
		||||
          defaultRenderer: 'dagre-wrapper',
 | 
			
		||||
        },
 | 
			
		||||
        flowchart: {
 | 
			
		||||
          // defaultRenderer: 'dagre-wrapper',
 | 
			
		||||
          nodeSpacing: 10,
 | 
			
		||||
          curve: 'cardinal',
 | 
			
		||||
          htmlLabels: true,
 | 
			
		||||
        },
 | 
			
		||||
        htmlLabels: false,
 | 
			
		||||
        // gantt: { axisFormat: '%m/%d/%Y' },
 | 
			
		||||
        sequence: { actorFontFamily: 'courier', actorMargin: 50, showSequenceNumbers: false },
 | 
			
		||||
        // sequenceDiagram: { actorMargin: 300 } // deprecated
 | 
			
		||||
        // fontFamily: '"times", sans-serif',
 | 
			
		||||
        // fontFamily: 'courier',
 | 
			
		||||
        fontSize: 18,
 | 
			
		||||
        curve: 'basis',
 | 
			
		||||
        securityLevel: 'strict',
 | 
			
		||||
        startOnLoad: false,
 | 
			
		||||
        secure: ['secure', 'securityLevel', 'startOnLoad', 'maxTextSize'],
 | 
			
		||||
        // themeVariables: {relationLabelColor: 'red'}
 | 
			
		||||
      });
 | 
			
		||||
      function callback() {
 | 
			
		||||
        alert('It worked');
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      let diagram = 'classDiagram\n';
 | 
			
		||||
      diagram += '`Class<img src=x on';
 | 
			
		||||
      diagram += 'error=xssAttack()>` <|-- `Class2<img src=x on';
 | 
			
		||||
      diagram += 'error=xssAttack()>`';
 | 
			
		||||
 | 
			
		||||
      console.log(diagram);
 | 
			
		||||
      // document.querySelector('#diagram').innerHTML = diagram;
 | 
			
		||||
      const { svg } = await mermaid.render('diagram', diagram);
 | 
			
		||||
      document.querySelector('#res').innerHTML = svg;
 | 
			
		||||
    </script>
 | 
			
		||||
  </body>
 | 
			
		||||
</html>
 | 
			
		||||
@@ -42,6 +42,16 @@
 | 
			
		||||
        font-size: 72px;
 | 
			
		||||
      }
 | 
			
		||||
    </style>
 | 
			
		||||
    <script>
 | 
			
		||||
      function xssAttack() {
 | 
			
		||||
        const div = document.createElement('div');
 | 
			
		||||
        div.id = 'the-malware';
 | 
			
		||||
        div.className = 'malware';
 | 
			
		||||
        div.innerHTML = 'XSS Succeeded';
 | 
			
		||||
        document.getElementsByTagName('body')[0].appendChild(div);
 | 
			
		||||
        throw new Error('XSS Succeeded');
 | 
			
		||||
      }
 | 
			
		||||
    </script>
 | 
			
		||||
  </head>
 | 
			
		||||
  <body>
 | 
			
		||||
    <div>Security check</div>
 | 
			
		||||
@@ -84,14 +94,6 @@
 | 
			
		||||
      function callback() {
 | 
			
		||||
        alert('It worked');
 | 
			
		||||
      }
 | 
			
		||||
      function xssAttack() {
 | 
			
		||||
        const div = document.createElement('div');
 | 
			
		||||
        div.id = 'the-malware';
 | 
			
		||||
        div.className = 'malware';
 | 
			
		||||
        div.innerHTML = 'XSS Succeeded';
 | 
			
		||||
        document.getElementsByTagName('body')[0].appendChild(div);
 | 
			
		||||
        throw new Error('XSS Succeeded');
 | 
			
		||||
      }
 | 
			
		||||
      let diagram = 'graph LR\n';
 | 
			
		||||
      diagram += 'B-->D("<img onerror=location=`java';
 | 
			
		||||
      // diagram += "script\u003aalert\u0028document.domain\u0029\` src=x>\"\);\n";
 | 
			
		||||
 
 | 
			
		||||
@@ -42,6 +42,16 @@
 | 
			
		||||
        font-size: 72px;
 | 
			
		||||
      }
 | 
			
		||||
    </style>
 | 
			
		||||
    <script>
 | 
			
		||||
      function xssAttack() {
 | 
			
		||||
        const div = document.createElement('div');
 | 
			
		||||
        div.id = 'the-malware';
 | 
			
		||||
        div.className = 'malware';
 | 
			
		||||
        div.innerHTML = 'XSS Succeeded';
 | 
			
		||||
        document.getElementsByTagName('body')[0].appendChild(div);
 | 
			
		||||
        throw new Error('XSS Succeeded');
 | 
			
		||||
      }
 | 
			
		||||
    </script>
 | 
			
		||||
  </head>
 | 
			
		||||
  <body>
 | 
			
		||||
    <div>Security check</div>
 | 
			
		||||
 
 | 
			
		||||
@@ -42,6 +42,16 @@
 | 
			
		||||
        font-size: 72px;
 | 
			
		||||
      }
 | 
			
		||||
    </style>
 | 
			
		||||
    <script>
 | 
			
		||||
      function xssAttack() {
 | 
			
		||||
        const div = document.createElement('div');
 | 
			
		||||
        div.id = 'the-malware';
 | 
			
		||||
        div.className = 'malware';
 | 
			
		||||
        div.innerHTML = 'XSS Succeeded';
 | 
			
		||||
        document.getElementsByTagName('body')[0].appendChild(div);
 | 
			
		||||
        throw new Error('XSS Succeeded');
 | 
			
		||||
      }
 | 
			
		||||
    </script>
 | 
			
		||||
  </head>
 | 
			
		||||
  <body>
 | 
			
		||||
    <div>Security check</div>
 | 
			
		||||
 
 | 
			
		||||
@@ -42,6 +42,16 @@
 | 
			
		||||
        font-size: 72px;
 | 
			
		||||
      }
 | 
			
		||||
    </style>
 | 
			
		||||
    <script>
 | 
			
		||||
      function xssAttack() {
 | 
			
		||||
        const div = document.createElement('div');
 | 
			
		||||
        div.id = 'the-malware';
 | 
			
		||||
        div.className = 'malware';
 | 
			
		||||
        div.innerHTML = 'XSS Succeeded';
 | 
			
		||||
        document.getElementsByTagName('body')[0].appendChild(div);
 | 
			
		||||
        throw new Error('XSS Succeeded');
 | 
			
		||||
      }
 | 
			
		||||
    </script>
 | 
			
		||||
  </head>
 | 
			
		||||
  <body>
 | 
			
		||||
    <div>Security check</div>
 | 
			
		||||
 
 | 
			
		||||
@@ -42,6 +42,16 @@
 | 
			
		||||
        font-size: 72px;
 | 
			
		||||
      }
 | 
			
		||||
    </style>
 | 
			
		||||
    <script>
 | 
			
		||||
      function xssAttack() {
 | 
			
		||||
        const div = document.createElement('div');
 | 
			
		||||
        div.id = 'the-malware';
 | 
			
		||||
        div.className = 'malware';
 | 
			
		||||
        div.innerHTML = 'XSS Succeeded';
 | 
			
		||||
        document.getElementsByTagName('body')[0].appendChild(div);
 | 
			
		||||
        throw new Error('XSS Succeeded');
 | 
			
		||||
      }
 | 
			
		||||
    </script>
 | 
			
		||||
  </head>
 | 
			
		||||
  <body>
 | 
			
		||||
    <div>Security check</div>
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user