Skip to content

Commit d0ecd8b

Browse files
authored
Merge pull request #7343 from plotly/fix-deprecated-tests
Run noCI tests using GitHub workflows
2 parents e4eaf44 + c79b348 commit d0ecd8b

13 files changed

+98
-434
lines changed

.github/workflows/test.yml

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# This workflow will do a clean installation of node dependencies, cache/restore them, build the source code and run tests across different versions of node
2+
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-nodejs
3+
4+
name: No CI Test
5+
6+
on: push
7+
8+
jobs:
9+
build:
10+
11+
runs-on: ubuntu-latest
12+
13+
strategy:
14+
matrix:
15+
node-version: [18.x]
16+
17+
steps:
18+
- uses: browser-actions/setup-chrome@v1
19+
- uses: actions/checkout@v4
20+
- name: Use Node.js ${{ matrix.node-version }}
21+
uses: actions/setup-node@v4
22+
with:
23+
node-version: ${{ matrix.node-version }}
24+
cache: 'npm'
25+
- run: chrome --version
26+
- run: ls
27+
- run: npm run pretest
28+
- run: npm ci
29+
- run: npm run cibuild
30+
- name: Run headless test
31+
uses: coactions/setup-xvfb@v1
32+
with:
33+
run: ./tasks/noci_test.sh jasmine

test/jasmine/assets/mouse_event.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ var Lib = require('../../../src/lib');
22

33
module.exports = function(type, x, y, opts) {
44
var visibility = document.visibilityState;
5-
if(visibility && visibility !== 'visible') {
6-
throw new Error('document.visibilityState = "' + visibility + '" - Please make the window visible.');
7-
}
5+
// if(visibility && visibility !== 'visible') {
6+
// throw new Error('document.visibilityState = "' + visibility + '" - Please make the window visible.');
7+
// }
88

99
var fullOpts = {
1010
bubbles: true,

test/jasmine/tests/bar_test.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1195,14 +1195,14 @@ describe('A bar plot', function() {
11951195
return node.querySelectorAll('g.point');
11961196
}
11971197

1198-
function assertTextIsInsidePath(textNode, pathNode) {
1198+
function assertTextIsInsidePath(textNode, pathNode, errorMargin=0) {
11991199
var textBB = textNode.getBoundingClientRect();
12001200
var pathBB = pathNode.getBoundingClientRect();
12011201

1202-
expect(pathBB.left).not.toBeGreaterThan(textBB.left);
1203-
expect(textBB.right).not.toBeGreaterThan(pathBB.right);
1204-
expect(pathBB.top).not.toBeGreaterThan(textBB.top);
1205-
expect(textBB.bottom).not.toBeGreaterThan(pathBB.bottom);
1202+
expect(pathBB.left - errorMargin).not.toBeGreaterThan(textBB.left);
1203+
expect(textBB.right - errorMargin).not.toBeGreaterThan(pathBB.right);
1204+
expect(pathBB.top - errorMargin).not.toBeGreaterThan(textBB.top);
1205+
expect(textBB.bottom - errorMargin).not.toBeGreaterThan(pathBB.bottom);
12061206
}
12071207

12081208
function assertTextIsAbovePath(textNode, pathNode) {
@@ -1828,7 +1828,7 @@ describe('A bar plot', function() {
18281828
assertTextIsInsidePath(text03, path03); // inside
18291829
assertTextIsInsidePath(text12, path12); // inside
18301830
assertTextIsInsidePath(text20, path20); // inside
1831-
assertTextIsInsidePath(text30, path30); // inside
1831+
assertTextIsInsidePath(text30, path30, 0.5); // inside
18321832
})
18331833
.then(done, done.fail);
18341834
});

test/jasmine/tests/cartesian_interact_test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -827,7 +827,7 @@ describe('axis zoom/pan and main plot zoom', function() {
827827
});
828828

829829
describe('updates matching axes', function() {
830-
var TOL = 1.5;
830+
var TOL = 1;
831831
var eventData;
832832

833833
function assertRanges(msg, exp) {

test/jasmine/tests/funnel_test.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -591,14 +591,14 @@ describe('A funnel plot', function() {
591591
return node.querySelectorAll('g.point');
592592
}
593593

594-
function assertTextIsInsidePath(textNode, pathNode) {
594+
function assertTextIsInsidePath(textNode, pathNode, errorMargin=0) {
595595
var textBB = textNode.getBoundingClientRect();
596596
var pathBB = pathNode.getBoundingClientRect();
597597

598-
expect(pathBB.left).not.toBeGreaterThan(textBB.left);
599-
expect(textBB.right).not.toBeGreaterThan(pathBB.right);
600-
expect(pathBB.top).not.toBeGreaterThan(textBB.top);
601-
expect(textBB.bottom).not.toBeGreaterThan(pathBB.bottom);
598+
expect(pathBB.left - errorMargin).not.toBeGreaterThan(textBB.left);
599+
expect(textBB.right - errorMargin).not.toBeGreaterThan(pathBB.right);
600+
expect(pathBB.top - errorMargin).not.toBeGreaterThan(textBB.top);
601+
expect(textBB.bottom - errorMargin).not.toBeGreaterThan(pathBB.bottom);
602602
}
603603

604604
function assertTextIsAbovePath(textNode, pathNode) {
@@ -969,7 +969,7 @@ describe('A funnel plot', function() {
969969
assertTextIsInsidePath(text03, path03); // inside
970970
assertTextIsInsidePath(text12, path12); // inside
971971
assertTextIsInsidePath(text20, path20); // inside
972-
assertTextIsInsidePath(text30, path30); // inside
972+
assertTextIsInsidePath(text30, path30, 0.5); // inside
973973
})
974974
.then(done, done.fail);
975975
});

test/jasmine/tests/gl3d_plot_interact_test.js

Lines changed: 0 additions & 126 deletions
Original file line numberDiff line numberDiff line change
@@ -14,132 +14,6 @@ var drag = require('../assets/drag');
1414
var selectButton = require('../assets/modebar_button');
1515
var delay = require('../assets/delay');
1616

17-
describe('Test gl3d before/after plot', function() {
18-
var gd;
19-
20-
var mock = require('../../image/mocks/gl3d_marker-arrays.json');
21-
22-
beforeEach(function() {
23-
jasmine.DEFAULT_TIMEOUT_INTERVAL = 8000;
24-
});
25-
26-
afterEach(function() {
27-
Plotly.purge(gd);
28-
destroyGraphDiv();
29-
});
30-
31-
it('@noCI @gl should not rotate camera on the very first click before scene is complete and then should rotate', function(done) {
32-
var _mock = Lib.extendDeep(
33-
{
34-
layout: {
35-
scene: {
36-
camera: {
37-
up: {
38-
x: 0,
39-
y: 0,
40-
z: 1
41-
},
42-
eye: {
43-
x: 1.2,
44-
y: 1.2,
45-
z: 1.2
46-
},
47-
center: {
48-
x: 0,
49-
y: 0,
50-
z: 0
51-
}
52-
}
53-
}
54-
}
55-
},
56-
mock
57-
);
58-
59-
var x = 605;
60-
var y = 271;
61-
62-
function _stayThere() {
63-
mouseEvent('mousemove', x, y);
64-
return delay(20)();
65-
}
66-
67-
function _clickThere() {
68-
mouseEvent('mouseover', x, y, {buttons: 1});
69-
return delay(20)();
70-
}
71-
72-
function _clickOtherplace() {
73-
mouseEvent('mouseover', 300, 300, {buttons: 1});
74-
return delay(20)();
75-
}
76-
77-
_stayThere()
78-
.then(function() {
79-
gd = createGraphDiv();
80-
return Plotly.newPlot(gd, _mock);
81-
})
82-
.then(delay(100))
83-
.then(function() {
84-
var cameraIn = gd._fullLayout.scene.camera;
85-
expect(cameraIn.up.x).toEqual(0, 'cameraIn.up.x');
86-
expect(cameraIn.up.y).toEqual(0, 'cameraIn.up.y');
87-
expect(cameraIn.up.z).toEqual(1, 'cameraIn.up.z');
88-
expect(cameraIn.center.x).toEqual(0, 'cameraIn.center.x');
89-
expect(cameraIn.center.y).toEqual(0, 'cameraIn.center.y');
90-
expect(cameraIn.center.z).toEqual(0, 'cameraIn.center.z');
91-
expect(cameraIn.eye.x).toEqual(1.2, 'cameraIn.eye.x');
92-
expect(cameraIn.eye.y).toEqual(1.2, 'cameraIn.eye.y');
93-
expect(cameraIn.eye.z).toEqual(1.2, 'cameraIn.eye.z');
94-
})
95-
.then(delay(100))
96-
.then(function() {
97-
var cameraBefore = gd._fullLayout.scene._scene.camera;
98-
expect(cameraBefore.up[0]).toBeCloseTo(0, 2, 'cameraBefore.up[0]');
99-
expect(cameraBefore.up[1]).toBeCloseTo(0, 2, 'cameraBefore.up[1]');
100-
expect(cameraBefore.up[2]).toBeCloseTo(1, 2, 'cameraBefore.up[2]');
101-
expect(cameraBefore.center[0]).toBeCloseTo(0, 2, 'cameraBefore.center[0]');
102-
expect(cameraBefore.center[1]).toBeCloseTo(0, 2, 'cameraBefore.center[1]');
103-
expect(cameraBefore.center[2]).toBeCloseTo(0, 2, 'cameraBefore.center[2]');
104-
expect(cameraBefore.eye[0]).toBeCloseTo(1.2, 2, 'cameraBefore.eye[0]');
105-
expect(cameraBefore.eye[1]).toBeCloseTo(1.2, 2, 'cameraBefore.eye[1]');
106-
expect(cameraBefore.eye[2]).toBeCloseTo(1.2, 2, 'cameraBefore.eye[2]');
107-
expect(cameraBefore.mouseListener.enabled === true);
108-
})
109-
.then(_clickThere)
110-
.then(delay(100))
111-
.then(function() {
112-
var cameraAfter = gd._fullLayout.scene._scene.camera;
113-
expect(cameraAfter.up[0]).toBeCloseTo(0, 2, 'cameraAfter.up[0]');
114-
expect(cameraAfter.up[1]).toBeCloseTo(0, 2, 'cameraAfter.up[1]');
115-
expect(cameraAfter.up[2]).toBeCloseTo(1, 2, 'cameraAfter.up[2]');
116-
expect(cameraAfter.center[0]).toBeCloseTo(0, 2, 'cameraAfter.center[0]');
117-
expect(cameraAfter.center[1]).toBeCloseTo(0, 2, 'cameraAfter.center[1]');
118-
expect(cameraAfter.center[2]).toBeCloseTo(0, 2, 'cameraAfter.center[2]');
119-
expect(cameraAfter.eye[0]).toBeCloseTo(1.2, 2, 'cameraAfter.eye[0]');
120-
expect(cameraAfter.eye[1]).toBeCloseTo(1.2, 2, 'cameraAfter.eye[1]');
121-
expect(cameraAfter.eye[2]).toBeCloseTo(1.2, 2, 'cameraAfter.eye[2]');
122-
expect(cameraAfter.mouseListener.enabled === true);
123-
})
124-
.then(_clickOtherplace)
125-
.then(delay(100))
126-
.then(function() {
127-
var cameraFinal = gd._fullLayout.scene._scene.camera;
128-
expect(cameraFinal.up[0]).toBeCloseTo(0, 2, 'cameraFinal.up[0]');
129-
expect(cameraFinal.up[1]).toBeCloseTo(0, 2, 'cameraFinal.up[1]');
130-
expect(cameraFinal.up[2]).toBeCloseTo(1, 2, 'cameraFinal.up[2]');
131-
expect(cameraFinal.center[0]).toBeCloseTo(0, 2, 'cameraFinal.center[0]');
132-
expect(cameraFinal.center[1]).toBeCloseTo(0, 2, 'cameraFinal.center[1]');
133-
expect(cameraFinal.center[2]).toBeCloseTo(0, 2, 'cameraFinal.center[2]');
134-
expect(cameraFinal.eye[0]).not.toBeCloseTo(1.2, 2, 'cameraFinal.eye[0]');
135-
expect(cameraFinal.eye[1]).not.toBeCloseTo(1.2, 2, 'cameraFinal.eye[1]');
136-
expect(cameraFinal.eye[2]).not.toBeCloseTo(1.2, 2, 'cameraFinal.eye[2]');
137-
expect(cameraFinal.mouseListener.enabled === true);
138-
})
139-
.then(done, done.fail);
140-
});
141-
});
142-
14317
describe('Test gl3d plots', function() {
14418
var gd;
14519

test/jasmine/tests/page_test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ describe('page rendering', function() {
5555
mock.layout.updatemenus = require('../../image/mocks/updatemenus.json').layout.updatemenus;
5656
mock.layout.sliders = require('../../image/mocks/sliders.json').layout.sliders;
5757

58-
mock.layout.xaxis.title = 'XXX';
58+
mock.layout.xaxis.title = {text: 'XXX'};
5959
mock.layout.showlegend = true;
6060

6161
return Plotly.newPlot(gd, mock.data, mock.layout).then(function() {

0 commit comments

Comments
 (0)