Skip to content

Commit c896f88

Browse files
authored
Release version 1.1.0
2 parents 3592cb3 + 72f99a8 commit c896f88

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

70 files changed

+3503
-596
lines changed

.github/workflows/e2e_testing.yml

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
name: E2E Testing
2+
on: push
3+
4+
jobs:
5+
cypress-run:
6+
runs-on: ubuntu-22.04
7+
steps:
8+
- name: Checkout
9+
uses: actions/checkout@v4
10+
- name: Cypress run
11+
uses: cypress-io/github-action@v6
12+
with:
13+
build: npm run build
14+
start: npm start
15+
browser: chrome

.github/workflows/testing.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: Testing
1+
name: Units Testing
22

33
on: push
44

README.md

+15
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,21 @@ $ yarn start
3838

3939
[demo & step-by-step manual](https://github.com/ComPlat/react-spectra-editor/blob/master/DEMO_MANUAL.md)
4040

41+
### Testing
42+
#### Unit test
43+
```
44+
$ yarn test
45+
```
46+
47+
#### E2E test
48+
```
49+
$ yarn start
50+
```
51+
52+
Open another terminal
53+
```
54+
$ yarn e2e
55+
```
4156

4257

4358
## Acknowledgments

cypress.config.ts

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import { defineConfig } from "cypress";
2+
3+
export default defineConfig({
4+
e2e: {
5+
setupNodeEvents(on, config) {
6+
// implement node event listeners here
7+
},
8+
experimentalStudio: true
9+
},
10+
});

cypress/e2e/cv_spec.cy.ts

+259
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,259 @@
1+
describe('CV', () => {
2+
beforeEach(() => {
3+
cy.viewport(2000, 2000)
4+
cy.visit('http://localhost:3000/')
5+
cy.get('#btn-cv').click()
6+
})
7+
8+
it('Open layout', () => {
9+
cy.get('.d3Line').children().should('have.class', 'd3Svg')
10+
cy.get('.d3Svg text.xLabel').should('have.text', 'V vs Ref')
11+
cy.get('.d3Svg text.yLabel').should('have.text', 'A')
12+
})
13+
14+
function addMaxPeak(view, offset=0) {
15+
cy.get('.btn-sv-bar-addpeak').click()
16+
cy.get('.d3Svg')
17+
.trigger('click', 1110 + offset, 480, {
18+
which: 1,
19+
view: view,
20+
})
21+
}
22+
23+
function addMinPeak(view, offset=0) {
24+
cy.get('.btn-sv-bar-addpeak').click()
25+
cy.get('.d3Svg')
26+
.trigger('click', 1050 + offset, 1480, {
27+
which: 1,
28+
view: view,
29+
})
30+
}
31+
32+
function addPecker(view, offset=0) {
33+
cy.get('.btn-sv-bar-addpecker').click()
34+
cy.get('.d3Svg')
35+
.trigger('click', 1350 + offset, 1480, {
36+
which: 1,
37+
view: view,
38+
})
39+
}
40+
41+
function removeMaxPeak(view, offset=0) {
42+
cy.get('.btn-sv-bar-rmpeak').click()
43+
cy.get('.d3Svg')
44+
.trigger('click', 1110 + offset, 450, {
45+
which: 1,
46+
view: view,
47+
})
48+
}
49+
50+
function removeMinPeak(view, offset=0) {
51+
cy.get('.btn-sv-bar-rmpeak').click()
52+
cy.get('.d3Svg')
53+
.trigger('click', 1050 + offset, 900, {
54+
which: 1,
55+
view: view,
56+
})
57+
}
58+
59+
function removePecker(view, offset=0) {
60+
cy.get('.btn-sv-bar-rmpecker').click()
61+
cy.get('.d3Svg')
62+
.trigger('click', 1350 + offset, 800, {
63+
which: 1,
64+
view: view,
65+
})
66+
}
67+
68+
it('Zoom in and zoom out on peaks', () => {
69+
cy.get('[data-testid="GraphSelectionPanel"]').click();
70+
cy.get('[data-testid="GraphSelectionPanel"] ul > li:nth-child(2)').click();
71+
72+
cy.window().then(win => {
73+
cy.get('.d3Svg')
74+
.trigger('mousedown', 1000, 300, {
75+
which: 1,
76+
view: win,
77+
})
78+
.trigger('mousemove', {
79+
clientX: 1200,
80+
clientY: 800,
81+
force: true,
82+
})
83+
.trigger('mouseup', {
84+
force: true,
85+
view: win,
86+
});
87+
88+
cy.wait(1000)
89+
cy.get('.btn-sv-bar-zoomreset').click()
90+
});
91+
92+
})
93+
94+
it('Add peak and pecker', () => {
95+
cy.window().then(win => {
96+
cy.get('[data-testid="GraphSelectionPanel"]').click();
97+
cy.get('[data-testid="GraphSelectionPanel"] ul > li:nth-child(2)').click();
98+
cy.get('[data-testid="PanelVoltammetry"]').click();
99+
cy.get('[data-testid="PanelVoltammetry"] table > tbody > tr:nth-child(1) > td:nth-child(2)').click();
100+
101+
addMaxPeak(win);
102+
103+
cy.get('[data-testid="PanelVoltammetry"] table > tbody > tr:nth-child(1) > td:nth-child(3)').click();
104+
105+
addMinPeak(win);
106+
107+
addPecker(win);
108+
});
109+
})
110+
111+
it('Remove peak and pecker', () => {
112+
cy.window().then(win => {
113+
cy.get('[data-testid="GraphSelectionPanel"]').click();
114+
cy.get('[data-testid="GraphSelectionPanel"] ul > li:nth-child(2)').click();
115+
cy.get('[data-testid="PanelVoltammetry"]').click();
116+
cy.get('[data-testid="PanelVoltammetry"] table > tbody > tr:nth-child(1) > td:nth-child(2)').click();
117+
118+
addMaxPeak(win);
119+
120+
cy.get('[data-testid="PanelVoltammetry"] table > tbody > tr:nth-child(1) > td:nth-child(3)').click();
121+
122+
addMinPeak(win);
123+
124+
addPecker(win);
125+
126+
cy.get('[data-testid="PanelVoltammetry"] table > tbody > tr:nth-child(1) > td:nth-child(2)').click();
127+
128+
removeMaxPeak(win);
129+
130+
cy.get('[data-testid="PanelVoltammetry"] table > tbody > tr:nth-child(1) > td:nth-child(3)').click();
131+
132+
removeMinPeak(win);
133+
134+
removePecker(win);
135+
});
136+
})
137+
138+
it('Add new list peak and pecker', () => {
139+
cy.window().then(win => {
140+
cy.get('[data-testid="GraphSelectionPanel"]').click();
141+
cy.get('[data-testid="GraphSelectionPanel"] ul > li:nth-child(2)').click();
142+
cy.get('[data-testid="PanelVoltammetry"]').click();
143+
cy.get('[data-testid="PanelVoltammetry"] table > tbody > tr:nth-child(1) > td:nth-child(2)').click();
144+
145+
addMaxPeak(win);
146+
147+
cy.get('[data-testid="PanelVoltammetry"] table > tbody > tr:nth-child(1) > td:nth-child(3)').click();
148+
149+
addMinPeak(win);
150+
151+
addPecker(win);
152+
153+
154+
/* ==== Generated with Cypress Studio ==== */
155+
cy.get('[data-testid="AddCircleOutlineIcon"] > path').click();
156+
/* ==== End Cypress Studio ==== */
157+
158+
cy.get('[data-testid="PanelVoltammetry"] table > tbody > tr:nth-child(2) > td:nth-child(2)').click();
159+
160+
addMaxPeak(win, 50);
161+
162+
cy.get('[data-testid="PanelVoltammetry"] table > tbody > tr:nth-child(2) > td:nth-child(3)').click();
163+
164+
addMinPeak(win, 50);
165+
166+
addPecker(win, 50);
167+
168+
/* ==== Generated with Cypress Studio ==== */
169+
cy.get(':nth-child(1) > :nth-child(8) > [data-testid="RemoveCircleIcon"] > path').click({force: true});
170+
/* ==== End Cypress Studio ==== */
171+
});
172+
})
173+
174+
it('Set reference peaks', () => {
175+
cy.window().then(win => {
176+
cy.get('[data-testid="GraphSelectionPanel"]').click();
177+
cy.get('[data-testid="GraphSelectionPanel"] ul > li:nth-child(2)').click();
178+
cy.get('[data-testid="PanelVoltammetry"]').click();
179+
cy.get('[data-testid="PanelVoltammetry"] table > tbody > tr:nth-child(1) > td:nth-child(2)').click();
180+
181+
addMaxPeak(win);
182+
183+
cy.get('[data-testid="PanelVoltammetry"] table > tbody > tr:nth-child(1) > td:nth-child(3)').click();
184+
185+
addMinPeak(win);
186+
187+
addPecker(win);
188+
189+
190+
/* ==== Generated with Cypress Studio ==== */
191+
cy.get('[data-testid="AddCircleOutlineIcon"] > path').click();
192+
/* ==== End Cypress Studio ==== */
193+
194+
cy.get('[data-testid="PanelVoltammetry"] table > tbody > tr:nth-child(2) > td:nth-child(2)').click();
195+
196+
addMaxPeak(win, 50);
197+
198+
cy.get('[data-testid="PanelVoltammetry"] table > tbody > tr:nth-child(2) > td:nth-child(3)').click();
199+
200+
addMinPeak(win, 50);
201+
202+
addPecker(win, 50);
203+
204+
/* ==== Generated with Cypress Studio ==== */
205+
cy.get(':nth-child(2) > :nth-child(1) > .MuiButtonBase-root > .PrivateSwitchBase-input').check();
206+
cy.get('[data-testid="AddLocationOutlinedIcon"]').click();
207+
cy.get('[data-testid="Pecker"] > .MuiFormControl-root > .MuiInputBase-root > #intg-factor-name').click();
208+
cy.get('[data-testid="Pecker"] > .MuiFormControl-root > .MuiInputBase-root > #intg-factor-name').click();
209+
cy.get('[data-testid="Pecker"] > .MuiFormControl-root > .MuiInputBase-root > #intg-factor-name').click();
210+
cy.get('[data-testid="AddLocationOutlinedIcon"]').click();
211+
cy.get(':nth-child(1) > :nth-child(1) > .MuiButtonBase-root > .PrivateSwitchBase-input').check();
212+
cy.get('[data-testid="AddLocationOutlinedIcon"]').click();
213+
/* ==== End Cypress Studio ==== */
214+
});
215+
})
216+
217+
it('Change axes labels', () => {
218+
/* ==== Generated with Cypress Studio ==== */
219+
cy.get('[aria-labelledby="select-x-axis-label"]').click();
220+
cy.get('[data-value="Voltage in V"]').click();
221+
cy.get('[aria-labelledby="select-y-axis-label"]').click();
222+
cy.get('[data-value="Current in A"]').click();
223+
// /* ==== End Cypress Studio ==== */
224+
225+
cy.get('.d3Svg text.xLabel').should('have.text', 'Voltage in V')
226+
cy.get('.d3Svg text.yLabel').should('have.text', 'Current in A')
227+
228+
/* ==== Generated with Cypress Studio ==== */
229+
cy.get('[aria-labelledby="select-x-axis-label"]').click();
230+
cy.get('[data-value="Voltage vs Ref in V"]').click();
231+
cy.get('[aria-labelledby="select-y-axis-label"]').click();
232+
cy.get('[data-value="Current in mA"]').click();
233+
// /* ==== End Cypress Studio ==== */
234+
235+
cy.get('.d3Svg text.xLabel').should('have.text', 'Voltage vs Ref in V')
236+
cy.get('.d3Svg text.yLabel').should('have.text', 'Current in mA')
237+
238+
/* ==== Generated with Cypress Studio ==== */
239+
cy.get('[aria-labelledby="select-x-axis-label"]').click();
240+
cy.get('[data-value="Potential in V"]').click();
241+
cy.get('[aria-labelledby="select-y-axis-label"]').click();
242+
cy.get('[data-value="Current in A"]').click();
243+
/* ==== End Cypress Studio ==== */
244+
245+
cy.get('.d3Svg text.xLabel').should('have.text', 'Potential in V')
246+
cy.get('.d3Svg text.yLabel').should('have.text', 'Current in A')
247+
248+
// /* ==== Generated with Cypress Studio ==== */
249+
cy.get('[aria-labelledby="select-x-axis-label"]').click();
250+
cy.get('[data-value="Potential vs Ref in V"]').click();
251+
cy.get('[aria-labelledby="select-y-axis-label"]').click();
252+
cy.get('[data-value="Current in mA"]').click();
253+
/* ==== End Cypress Studio ==== */
254+
255+
cy.get('.d3Svg text.xLabel').should('have.text', 'Potential vs Ref in V')
256+
cy.get('.d3Svg text.yLabel').should('have.text', 'Current in mA')
257+
258+
})
259+
})

0 commit comments

Comments
 (0)