diff --git a/src/e2e/NDL-dive-to-25m-for-50-mins-on-nitrox-32.spec.ts b/src/e2e/NDL-dive-to-25m-for-50-mins-on-nitrox-32.spec.ts index a4945f38..9f147f68 100644 --- a/src/e2e/NDL-dive-to-25m-for-50-mins-on-nitrox-32.spec.ts +++ b/src/e2e/NDL-dive-to-25m-for-50-mins-on-nitrox-32.spec.ts @@ -7,60 +7,63 @@ test('NDL dive to 25m for 50 mins on nitrox 32', async ({ page }) => { const newDivePage = await homePage.planADive(); await newDivePage.selectStandardGas('Nitrox 32'); - expect(await newDivePage.getMaxDepthPO2()).toBe('33m (40m deco)'); - expect(await newDivePage.getMaxDepthEND()).toBe('30m'); - expect(await newDivePage.getMinDepthHypoxia()).toBe('0m'); + expect.soft(await newDivePage.getMaxDepthPO2()).toBe('33m (40m deco)'); + expect.soft(await newDivePage.getMaxDepthEND()).toBe('30m'); + expect.soft(await newDivePage.getMinDepthHypoxia()).toBe('0m'); let diveOverviewPage = await newDivePage.Save(); const changeDepthPage = await diveOverviewPage.addChangeDepthSegment(); - expect(await changeDepthPage.currentStats.getCurrentDepth()).toBe('0m'); - expect(await changeDepthPage.currentStats.getNoDecoLimit()).toBe('> 5 hours'); - expect(await changeDepthPage.currentStats.getCurrentCeiling()).toBe('0m'); - expect(await changeDepthPage.currentStats.getCurrentGas()).toBe('Nitrox 32 (O2: 32%, He: 0%, N2: 68%)'); - expect(await changeDepthPage.currentStats.getCurrentMaxDepthPO2()).toBe('33m (40m deco)'); - expect(await changeDepthPage.currentStats.getCurrentMaxDepthEND()).toBe('30m'); - expect(await changeDepthPage.currentStats.getCurrentMinDepthHypoxia()).toBe('0m'); - expect(await changeDepthPage.currentStats.getCurrentPO2()).toBe('0.32'); - expect(await changeDepthPage.currentStats.getCurrentEND()).toBe('0m'); + expect.soft(await changeDepthPage.currentStats.getCurrentDepth()).toBe('0m'); + expect.soft(await changeDepthPage.currentStats.getNoDecoLimit()).toBe('> 5 hours'); + expect.soft(await changeDepthPage.currentStats.getCurrentCeiling()).toBe('0m'); + expect.soft(await changeDepthPage.currentStats.getCurrentGas()).toBe('Nitrox 32 (O2: 32%, He: 0%, N2: 68%)'); + expect.soft(await changeDepthPage.currentStats.getCurrentMaxDepthPO2()).toBe('33m (40m deco)'); + expect.soft(await changeDepthPage.currentStats.getCurrentMaxDepthEND()).toBe('30m'); + expect.soft(await changeDepthPage.currentStats.getCurrentMinDepthHypoxia()).toBe('0m'); + expect.soft(await changeDepthPage.currentStats.getCurrentPO2()).toBe('0.32'); + expect.soft(await changeDepthPage.currentStats.getCurrentEND()).toBe('0m'); await changeDepthPage.setNewDepth(25); - expect(await changeDepthPage.getDescentTime()).toBe('1 min 15 sec @ 20m/min'); - expect(await changeDepthPage.getNewDepthPO2()).toBe('1.12'); - expect(await changeDepthPage.getNewDepthEND()).toBe('25m'); - expect(await changeDepthPage.getNewDepthNDL()).toBe('57 min 4 sec'); - expect(await changeDepthPage.getNewDepthCeiling()).toBe('0m'); + expect.soft(await changeDepthPage.getDescentTime()).toBe('1 min 15 sec @ 20m/min'); + expect.soft(await changeDepthPage.getNewDepthPO2()).toBe('1.12'); + expect.soft(await changeDepthPage.getNewDepthEND()).toBe('25m'); + expect.soft(await changeDepthPage.getNewDepthNDL()).toBe('45 min 35 sec'); + expect.soft(await changeDepthPage.getNewDepthCeiling()).toBe('0m'); diveOverviewPage = await changeDepthPage.Save(); const maintainDepthPage = await diveOverviewPage.addMaintainDepthSegment(); - expect(await maintainDepthPage.currentStats.getCurrentDepth()).toBe('25m'); - expect(await maintainDepthPage.currentStats.getNoDecoLimit()).toBe('57 min 4 sec'); - expect(await maintainDepthPage.currentStats.getCurrentCeiling()).toBe('0m'); - expect(await maintainDepthPage.currentStats.getCurrentGas()).toBe('Nitrox 32 (O2: 32%, He: 0%, N2: 68%)'); - expect(await maintainDepthPage.currentStats.getCurrentMaxDepthPO2()).toBe('33m (40m deco)'); - expect(await maintainDepthPage.currentStats.getCurrentMaxDepthEND()).toBe('30m'); - expect(await maintainDepthPage.currentStats.getCurrentMinDepthHypoxia()).toBe('0m'); - expect(await maintainDepthPage.currentStats.getCurrentPO2()).toBe('1.12'); - expect(await maintainDepthPage.currentStats.getCurrentEND()).toBe('25m'); + expect.soft(await maintainDepthPage.currentStats.getCurrentDepth()).toBe('25m'); + expect.soft(await maintainDepthPage.currentStats.getNoDecoLimit()).toBe('45 min 35 sec'); + expect.soft(await maintainDepthPage.currentStats.getCurrentCeiling()).toBe('0m'); + expect.soft(await maintainDepthPage.currentStats.getCurrentGas()).toBe('Nitrox 32 (O2: 32%, He: 0%, N2: 68%)'); + expect.soft(await maintainDepthPage.currentStats.getCurrentMaxDepthPO2()).toBe('33m (40m deco)'); + expect.soft(await maintainDepthPage.currentStats.getCurrentMaxDepthEND()).toBe('30m'); + expect.soft(await maintainDepthPage.currentStats.getCurrentMinDepthHypoxia()).toBe('0m'); + expect.soft(await maintainDepthPage.currentStats.getCurrentPO2()).toBe('1.12'); + expect.soft(await maintainDepthPage.currentStats.getCurrentEND()).toBe('25m'); - await maintainDepthPage.setTimeAtDepth(50); - expect(await maintainDepthPage.getTotalDiveDuration()).toBe('51 min 15 sec'); - expect(await maintainDepthPage.getNewNDL()).toBe('7 min 4 sec'); - expect(await maintainDepthPage.getNewCeiling()).toBe('0m'); + await maintainDepthPage.setTimeAtDepth(45); + expect.soft(await maintainDepthPage.getTotalDiveDuration()).toBe('46 min 15 sec'); + expect.soft(await maintainDepthPage.getNewNDL()).toBe('35 sec'); + expect.soft(await maintainDepthPage.getNewCeiling()).toBe('1m'); diveOverviewPage = await maintainDepthPage.Save(); const diveSegments = await diveOverviewPage.getDiveSegments(); - expect(diveSegments[0].heading).toBe('scuba_diving 0:00 Start Dive'); - expect(diveSegments[0].details).toBe('Nitrox 32 (O2: 32%, He: 0%, N2: 68%)'); - expect(diveSegments[1].heading).toBe('arrow_downward 0:00 Descend to 25m'); - expect(diveSegments[1].details).toBe('Descent time: 1 min 15 sec @ 20m/min'); - expect(diveSegments[2].heading).toBe('arrow_forward 1:15 Maintain Depth at 25m'); - expect(diveSegments[2].details).toBe('Time: 50 min'); - expect(diveSegments[3].heading).toBe('done 51:15 Surface'); - expect(diveSegments[3].details).toBe('Ascent time: 2 min 30 sec @ 10m/min'); + expect.soft(diveSegments[0].heading).toBe('scuba_diving 0:00 Start Dive'); + expect.soft(diveSegments[0].details).toBe('Nitrox 32 (O2: 32%, He: 0%, N2: 68%)'); + expect.soft(diveSegments[1].heading).toBe('arrow_downward 0:00 Descend to 25m'); + expect.soft(diveSegments[1].details).toBe('Descent time: 1 min 15 sec @ 20m/min'); + expect.soft(diveSegments[2].heading).toBe('arrow_forward 1:15 Maintain Depth at 25m'); + expect.soft(diveSegments[2].details).toBe('Time: 45 min'); + expect.soft(diveSegments[3].heading).toBe('done 46:15 Surface'); + expect.soft(diveSegments[3].details).toBe('Ascent time: 2 min 30 sec @ 10m/min'); - expect(await diveOverviewPage.getDiveDuration()).toBe('53 min 45 sec'); - expect(await diveOverviewPage.getMaxDepth()).toBe('25m'); - expect(await diveOverviewPage.getAverageDepth()).toBe('24m'); + expect.soft(await diveOverviewPage.getDiveDuration()).toBe('48 min 45 sec'); + expect.soft(await diveOverviewPage.getMaxDepth()).toBe('25m'); + expect.soft(await diveOverviewPage.getAverageDepth()).toBe('24m'); + + const diveErrors = await diveOverviewPage.getDiveErrors(); + expect.soft(diveErrors).toHaveLength(0); }); diff --git a/src/e2e/deco-dive-to-100m-for-30-mins.spec.ts b/src/e2e/deco-dive-to-100m-for-30-mins.spec.ts index 99816df9..48f26749 100644 --- a/src/e2e/deco-dive-to-100m-for-30-mins.spec.ts +++ b/src/e2e/deco-dive-to-100m-for-30-mins.spec.ts @@ -7,531 +7,533 @@ test('deco dive to 100m for 30 mins', async ({ page }) => { const newDivePage = await homePage.planADive(); await newDivePage.selectStandardGas('Nitrox 50'); - expect(await newDivePage.getMaxDepthPO2()).toBe('18m (22m deco)'); - expect(await newDivePage.getMaxDepthEND()).toBe('30m'); - expect(await newDivePage.getMinDepthHypoxia()).toBe('0m'); + expect.soft(await newDivePage.getMaxDepthPO2()).toBe('18m (22m deco)'); + expect.soft(await newDivePage.getMaxDepthEND()).toBe('30m'); + expect.soft(await newDivePage.getMinDepthHypoxia()).toBe('0m'); let diveOverviewPage = await newDivePage.Save(); // add 1st segment let changeDepthPage = await diveOverviewPage.addChangeDepthSegment(); - expect(await changeDepthPage.currentStats.getCurrentDepth()).toBe('0m'); - expect(await changeDepthPage.currentStats.getNoDecoLimit()).toBe('> 5 hours'); - expect(await changeDepthPage.currentStats.getCurrentCeiling()).toBe('0m'); - expect(await changeDepthPage.currentStats.getCurrentGas()).toBe('Nitrox 50 (O2: 50%, He: 0%, N2: 50%)'); - expect(await changeDepthPage.currentStats.getCurrentMaxDepthPO2()).toBe('18m (22m deco)'); - expect(await changeDepthPage.currentStats.getCurrentMaxDepthEND()).toBe('30m'); - expect(await changeDepthPage.currentStats.getCurrentMinDepthHypoxia()).toBe('0m'); - expect(await changeDepthPage.currentStats.getCurrentPO2()).toBe('0.50'); - expect(await changeDepthPage.currentStats.getCurrentEND()).toBe('0m'); + expect.soft(await changeDepthPage.currentStats.getCurrentDepth()).toBe('0m'); + expect.soft(await changeDepthPage.currentStats.getNoDecoLimit()).toBe('> 5 hours'); + expect.soft(await changeDepthPage.currentStats.getCurrentCeiling()).toBe('0m'); + expect.soft(await changeDepthPage.currentStats.getCurrentGas()).toBe('Nitrox 50 (O2: 50%, He: 0%, N2: 50%)'); + expect.soft(await changeDepthPage.currentStats.getCurrentMaxDepthPO2()).toBe('18m (22m deco)'); + expect.soft(await changeDepthPage.currentStats.getCurrentMaxDepthEND()).toBe('30m'); + expect.soft(await changeDepthPage.currentStats.getCurrentMinDepthHypoxia()).toBe('0m'); + expect.soft(await changeDepthPage.currentStats.getCurrentPO2()).toBe('0.50'); + expect.soft(await changeDepthPage.currentStats.getCurrentEND()).toBe('0m'); await changeDepthPage.setNewDepth(18); - expect(await changeDepthPage.getDescentTime()).toBe('54 sec @ 20m/min'); - expect(await changeDepthPage.getNewDepthPO2()).toBe('1.40'); - expect(await changeDepthPage.getNewDepthEND()).toBe('18m'); - expect(await changeDepthPage.getNewDepthNDL()).toBe('> 5 hours'); - expect(await changeDepthPage.getNewDepthCeiling()).toBe('0m'); + expect.soft(await changeDepthPage.getDescentTime()).toBe('54 sec @ 20m/min'); + expect.soft(await changeDepthPage.getNewDepthPO2()).toBe('1.40'); + expect.soft(await changeDepthPage.getNewDepthEND()).toBe('18m'); + expect.soft(await changeDepthPage.getNewDepthNDL()).toBe('> 5 hours'); + expect.soft(await changeDepthPage.getNewDepthCeiling()).toBe('0m'); diveOverviewPage = await changeDepthPage.Save(); let diveSegments = await diveOverviewPage.getDiveSegments(); - expect(diveSegments[0].heading).toBe('scuba_diving 0:00 Start Dive'); - expect(diveSegments[0].details).toBe('Nitrox 50 (O2: 50%, He: 0%, N2: 50%)'); - expect(diveSegments[1].heading).toBe('arrow_downward 0:00 Descend to 18m'); - expect(diveSegments[1].details).toBe('Descent time: 54 sec @ 20m/min'); - expect(diveSegments[2].heading).toBe('done 0:54 Surface'); - expect(diveSegments[2].details).toBe('Ascent time: 1 min 48 sec @ 10m/min'); + expect.soft(diveSegments[0].heading).toBe('scuba_diving 0:00 Start Dive'); + expect.soft(diveSegments[0].details).toBe('Nitrox 50 (O2: 50%, He: 0%, N2: 50%)'); + expect.soft(diveSegments[1].heading).toBe('arrow_downward 0:00 Descend to 18m'); + expect.soft(diveSegments[1].details).toBe('Descent time: 54 sec @ 20m/min'); + expect.soft(diveSegments[2].heading).toBe('done 0:54 Surface'); + expect.soft(diveSegments[2].details).toBe('Ascent time: 1 min 48 sec @ 10m/min'); - expect(await diveOverviewPage.getDiveDuration()).toBe('2 min 42 sec'); - expect(await diveOverviewPage.getMaxDepth()).toBe('18m'); - expect(await diveOverviewPage.getAverageDepth()).toBe('9m'); + expect.soft(await diveOverviewPage.getDiveDuration()).toBe('2 min 42 sec'); + expect.soft(await diveOverviewPage.getMaxDepth()).toBe('18m'); + expect.soft(await diveOverviewPage.getAverageDepth()).toBe('9m'); let diveErrors = await diveOverviewPage.getDiveErrors(); - expect(diveErrors.length).toBe(0); + expect.soft(diveErrors.length).toBe(0); // add 2nd segment let changeGasPage = await diveOverviewPage.addChangeGasSegment(); - expect(await changeGasPage.currentStats.getCurrentDepth()).toBe('18m'); - expect(await changeGasPage.currentStats.getNoDecoLimit()).toBe('> 5 hours'); - expect(await changeGasPage.currentStats.getCurrentCeiling()).toBe('0m'); - expect(await changeGasPage.currentStats.getCurrentGas()).toBe('Nitrox 50 (O2: 50%, He: 0%, N2: 50%)'); - expect(await changeGasPage.currentStats.getCurrentMaxDepthPO2()).toBe('18m (22m deco)'); - expect(await changeGasPage.currentStats.getCurrentMaxDepthEND()).toBe('30m'); - expect(await changeGasPage.currentStats.getCurrentMinDepthHypoxia()).toBe('0m'); - expect(await changeGasPage.currentStats.getCurrentPO2()).toBe('1.40'); - expect(await changeGasPage.currentStats.getCurrentEND()).toBe('18m'); + expect.soft(await changeGasPage.currentStats.getCurrentDepth()).toBe('18m'); + expect.soft(await changeGasPage.currentStats.getNoDecoLimit()).toBe('> 5 hours'); + expect.soft(await changeGasPage.currentStats.getCurrentCeiling()).toBe('0m'); + expect.soft(await changeGasPage.currentStats.getCurrentGas()).toBe('Nitrox 50 (O2: 50%, He: 0%, N2: 50%)'); + expect.soft(await changeGasPage.currentStats.getCurrentMaxDepthPO2()).toBe('18m (22m deco)'); + expect.soft(await changeGasPage.currentStats.getCurrentMaxDepthEND()).toBe('30m'); + expect.soft(await changeGasPage.currentStats.getCurrentMinDepthHypoxia()).toBe('0m'); + expect.soft(await changeGasPage.currentStats.getCurrentPO2()).toBe('1.40'); + expect.soft(await changeGasPage.currentStats.getCurrentEND()).toBe('18m'); await changeGasPage.selectStandardGas('Trimix 10/70'); - expect(await changeGasPage.getNewGasPO2()).toBe('0.28'); - expect(await changeGasPage.getNewGasEND()).toBe('0m'); - expect(await changeGasPage.getNewGasNoDecoLimit()).toBe('44 min 44 sec'); - expect(await changeGasPage.getNewGasMaxDepthPO2()).toBe('130m (150m deco)'); - expect(await changeGasPage.getNewGasMaxDepthEND()).toBe('123m'); - expect(await changeGasPage.getNewGasMinDepthHypoxia()).toBe('8m'); + expect.soft(await changeGasPage.getNewGasPO2()).toBe('0.28'); + expect.soft(await changeGasPage.getNewGasEND()).toBe('0m'); + expect.soft(await changeGasPage.getNewGasNoDecoLimit()).toBe('20 min 23 sec'); + expect.soft(await changeGasPage.getNewGasMaxDepthPO2()).toBe('130m (150m deco)'); + expect.soft(await changeGasPage.getNewGasMaxDepthEND()).toBe('123m'); + expect.soft(await changeGasPage.getNewGasMinDepthHypoxia()).toBe('8m'); diveOverviewPage = await changeGasPage.Save(); diveSegments = await diveOverviewPage.getDiveSegments(); - expect(diveSegments[0].heading).toBe('scuba_diving 0:00 Start Dive'); - expect(diveSegments[0].details).toBe('Nitrox 50 (O2: 50%, He: 0%, N2: 50%)'); - expect(diveSegments[1].heading).toBe('arrow_downward 0:00 Descend to 18m'); - expect(diveSegments[1].details).toBe('Descent time: 54 sec @ 20m/min'); - expect(diveSegments[2].heading).toBe('air 0:54 Switch Gas'); - expect(diveSegments[2].details).toBe('Trimix 10/70 (O2: 10%, He: 70%, N2: 20%)'); - expect(diveSegments[3].heading).toBe('done 0:54 Surface'); - expect(diveSegments[3].details).toBe('Ascent time: 1 min 48 sec @ 10m/min'); - - expect(await diveOverviewPage.getDiveDuration()).toBe('2 min 42 sec'); - expect(await diveOverviewPage.getMaxDepth()).toBe('18m'); - expect(await diveOverviewPage.getAverageDepth()).toBe('9m'); + expect.soft(diveSegments[0].heading).toBe('scuba_diving 0:00 Start Dive'); + expect.soft(diveSegments[0].details).toBe('Nitrox 50 (O2: 50%, He: 0%, N2: 50%)'); + expect.soft(diveSegments[1].heading).toBe('arrow_downward 0:00 Descend to 18m'); + expect.soft(diveSegments[1].details).toBe('Descent time: 54 sec @ 20m/min'); + expect.soft(diveSegments[2].heading).toBe('air 0:54 Switch Gas'); + expect.soft(diveSegments[2].details).toBe('Trimix 10/70 (O2: 10%, He: 70%, N2: 20%)'); + expect.soft(diveSegments[3].heading).toBe('done 0:54 Surface'); + expect.soft(diveSegments[3].details).toBe('Ascent time: 1 min 48 sec @ 10m/min'); + + expect.soft(await diveOverviewPage.getDiveDuration()).toBe('2 min 42 sec'); + expect.soft(await diveOverviewPage.getMaxDepth()).toBe('18m'); + expect.soft(await diveOverviewPage.getAverageDepth()).toBe('9m'); diveErrors = await diveOverviewPage.getDiveErrors(); - expect(diveErrors.length).toBe(1); - expect(diveErrors[0]).toBe('Hypoxic gas as low as 0.102 for 47 sec'); + expect.soft(diveErrors.length).toBe(1); + expect.soft(diveErrors[0]).toBe('Hypoxic gas as low as 0.102 for 47 sec'); // add 3rd segment let maintainDepthPage = await diveOverviewPage.addMaintainDepthSegment(); - expect(await maintainDepthPage.currentStats.getCurrentDepth()).toBe('18m'); - expect(await maintainDepthPage.currentStats.getNoDecoLimit()).toBe('44 min 44 sec'); - expect(await maintainDepthPage.currentStats.getCurrentCeiling()).toBe('0m'); - expect(await maintainDepthPage.currentStats.getCurrentGas()).toBe('Trimix 10/70 (O2: 10%, He: 70%, N2: 20%)'); - expect(await maintainDepthPage.currentStats.getCurrentMaxDepthPO2()).toBe('130m (150m deco)'); - expect(await maintainDepthPage.currentStats.getCurrentMaxDepthEND()).toBe('123m'); - expect(await maintainDepthPage.currentStats.getCurrentMinDepthHypoxia()).toBe('8m'); - expect(await maintainDepthPage.currentStats.getCurrentPO2()).toBe('0.28'); - expect(await maintainDepthPage.currentStats.getCurrentEND()).toBe('0m'); + expect.soft(await maintainDepthPage.currentStats.getCurrentDepth()).toBe('18m'); + expect.soft(await maintainDepthPage.currentStats.getNoDecoLimit()).toBe('20 min 23 sec'); + expect.soft(await maintainDepthPage.currentStats.getCurrentCeiling()).toBe('0m'); + expect.soft(await maintainDepthPage.currentStats.getCurrentGas()).toBe('Trimix 10/70 (O2: 10%, He: 70%, N2: 20%)'); + expect.soft(await maintainDepthPage.currentStats.getCurrentMaxDepthPO2()).toBe('130m (150m deco)'); + expect.soft(await maintainDepthPage.currentStats.getCurrentMaxDepthEND()).toBe('123m'); + expect.soft(await maintainDepthPage.currentStats.getCurrentMinDepthHypoxia()).toBe('8m'); + expect.soft(await maintainDepthPage.currentStats.getCurrentPO2()).toBe('0.28'); + expect.soft(await maintainDepthPage.currentStats.getCurrentEND()).toBe('0m'); await maintainDepthPage.setTimeAtDepth(1); - expect(await maintainDepthPage.getTotalDiveDuration()).toBe('1 min 54 sec'); - expect(await maintainDepthPage.getNewNDL()).toBe('43 min 44 sec'); - expect(await maintainDepthPage.getNewCeiling()).toBe('0m'); + expect.soft(await maintainDepthPage.getTotalDiveDuration()).toBe('1 min 54 sec'); + expect.soft(await maintainDepthPage.getNewNDL()).toBe('19 min 23 sec'); + expect.soft(await maintainDepthPage.getNewCeiling()).toBe('0m'); diveOverviewPage = await maintainDepthPage.Save(); diveSegments = await diveOverviewPage.getDiveSegments(); - expect(diveSegments[0].heading).toBe('scuba_diving 0:00 Start Dive'); - expect(diveSegments[0].details).toBe('Nitrox 50 (O2: 50%, He: 0%, N2: 50%)'); - expect(diveSegments[1].heading).toBe('arrow_downward 0:00 Descend to 18m'); - expect(diveSegments[1].details).toBe('Descent time: 54 sec @ 20m/min'); - expect(diveSegments[2].heading).toBe('air 0:54 Switch Gas'); - expect(diveSegments[2].details).toBe('Trimix 10/70 (O2: 10%, He: 70%, N2: 20%)'); - expect(diveSegments[3].heading).toBe('arrow_forward 0:54 Maintain Depth at 18m'); - expect(diveSegments[3].details).toBe('Time: 1 min'); - expect(diveSegments[4].heading).toBe('done 1:54 Surface'); - expect(diveSegments[4].details).toBe('Ascent time: 1 min 48 sec @ 10m/min'); - - expect(await diveOverviewPage.getDiveDuration()).toBe('3 min 42 sec'); - expect(await diveOverviewPage.getMaxDepth()).toBe('18m'); - expect(await diveOverviewPage.getAverageDepth()).toBe('11m'); + expect.soft(diveSegments[0].heading).toBe('scuba_diving 0:00 Start Dive'); + expect.soft(diveSegments[0].details).toBe('Nitrox 50 (O2: 50%, He: 0%, N2: 50%)'); + expect.soft(diveSegments[1].heading).toBe('arrow_downward 0:00 Descend to 18m'); + expect.soft(diveSegments[1].details).toBe('Descent time: 54 sec @ 20m/min'); + expect.soft(diveSegments[2].heading).toBe('air 0:54 Switch Gas'); + expect.soft(diveSegments[2].details).toBe('Trimix 10/70 (O2: 10%, He: 70%, N2: 20%)'); + expect.soft(diveSegments[3].heading).toBe('arrow_forward 0:54 Maintain Depth at 18m'); + expect.soft(diveSegments[3].details).toBe('Time: 1 min'); + expect.soft(diveSegments[4].heading).toBe('done 1:54 Surface'); + expect.soft(diveSegments[4].details).toBe('Ascent time: 1 min 48 sec @ 10m/min'); + + expect.soft(await diveOverviewPage.getDiveDuration()).toBe('3 min 42 sec'); + expect.soft(await diveOverviewPage.getMaxDepth()).toBe('18m'); + expect.soft(await diveOverviewPage.getAverageDepth()).toBe('11m'); diveErrors = await diveOverviewPage.getDiveErrors(); - expect(diveErrors.length).toBe(1); - expect(diveErrors[0]).toBe('Hypoxic gas as low as 0.102 for 47 sec'); + expect.soft(diveErrors.length).toBe(1); + expect.soft(diveErrors[0]).toBe('Hypoxic gas as low as 0.102 for 47 sec'); // add 4th segment changeDepthPage = await diveOverviewPage.addChangeDepthSegment(); - expect(await changeDepthPage.currentStats.getCurrentDepth()).toBe('18m'); - expect(await changeDepthPage.currentStats.getNoDecoLimit()).toBe('43 min 44 sec'); - expect(await changeDepthPage.currentStats.getCurrentCeiling()).toBe('0m'); - expect(await changeDepthPage.currentStats.getCurrentGas()).toBe('Trimix 10/70 (O2: 10%, He: 70%, N2: 20%)'); - expect(await changeDepthPage.currentStats.getCurrentMaxDepthPO2()).toBe('130m (150m deco)'); - expect(await changeDepthPage.currentStats.getCurrentMaxDepthEND()).toBe('123m'); - expect(await changeDepthPage.currentStats.getCurrentMinDepthHypoxia()).toBe('8m'); - expect(await changeDepthPage.currentStats.getCurrentPO2()).toBe('0.28'); - expect(await changeDepthPage.currentStats.getCurrentEND()).toBe('0m'); + expect.soft(await changeDepthPage.currentStats.getCurrentDepth()).toBe('18m'); + expect.soft(await changeDepthPage.currentStats.getNoDecoLimit()).toBe('19 min 23 sec'); + expect.soft(await changeDepthPage.currentStats.getCurrentCeiling()).toBe('0m'); + expect.soft(await changeDepthPage.currentStats.getCurrentGas()).toBe('Trimix 10/70 (O2: 10%, He: 70%, N2: 20%)'); + expect.soft(await changeDepthPage.currentStats.getCurrentMaxDepthPO2()).toBe('130m (150m deco)'); + expect.soft(await changeDepthPage.currentStats.getCurrentMaxDepthEND()).toBe('123m'); + expect.soft(await changeDepthPage.currentStats.getCurrentMinDepthHypoxia()).toBe('8m'); + expect.soft(await changeDepthPage.currentStats.getCurrentPO2()).toBe('0.28'); + expect.soft(await changeDepthPage.currentStats.getCurrentEND()).toBe('0m'); await changeDepthPage.setNewDepth(100); - expect(await changeDepthPage.getDescentTime()).toBe('4 min 6 sec @ 20m/min'); - expect(await changeDepthPage.getNewDepthPO2()).toBe('1.10'); - expect(await changeDepthPage.getNewDepthEND()).toBe('23m'); - expect(await changeDepthPage.getNewDepthNDL()).toBe('0 sec'); - expect(await changeDepthPage.getNewDepthCeiling()).toBe('10m'); + expect.soft(await changeDepthPage.getDescentTime()).toBe('4 min 6 sec @ 20m/min'); + expect.soft(await changeDepthPage.getNewDepthPO2()).toBe('1.10'); + expect.soft(await changeDepthPage.getNewDepthEND()).toBe('23m'); + expect.soft(await changeDepthPage.getNewDepthNDL()).toBe('0 sec'); + expect.soft(await changeDepthPage.getNewDepthCeiling()).toBe('14m'); diveOverviewPage = await changeDepthPage.Save(); diveSegments = await diveOverviewPage.getDiveSegments(); - expect(diveSegments[4].heading).toBe('arrow_downward 1:54 Descend to 100m'); - expect(diveSegments[4].details).toBe('Descent time: 4 min 6 sec @ 20m/min'); - expect(diveSegments[5].heading).toBe('done 6:00 Surface'); - expect(diveSegments[5].details).toBe('Ascent time: 10 min @ 10m/min'); + expect.soft(diveSegments[4].heading).toBe('arrow_downward 1:54 Descend to 100m'); + expect.soft(diveSegments[4].details).toBe('Descent time: 4 min 6 sec @ 20m/min'); + expect.soft(diveSegments[5].heading).toBe('done 6:00 Surface'); + expect.soft(diveSegments[5].details).toBe('Ascent time: 10 min @ 10m/min'); - expect(await diveOverviewPage.getDiveDuration()).toBe('16 min'); - expect(await diveOverviewPage.getMaxDepth()).toBe('100m'); - expect(await diveOverviewPage.getAverageDepth()).toBe('48m'); + expect.soft(await diveOverviewPage.getDiveDuration()).toBe('16 min'); + expect.soft(await diveOverviewPage.getMaxDepth()).toBe('100m'); + expect.soft(await diveOverviewPage.getAverageDepth()).toBe('48m'); diveErrors = await diveOverviewPage.getDiveErrors(); - expect(diveErrors.length).toBe(2); - expect(diveErrors[0]).toBe('Exceeded ceiling by up to 7.9m for 57 sec'); - expect(diveErrors[1]).toBe('Hypoxic gas as low as 0.102 for 47 sec'); + expect.soft(diveErrors.length).toBe(2); + expect.soft(diveErrors[0]).toBe('Exceeded ceiling by up to 11.5m for 1 min 22 sec'); + expect.soft(diveErrors[1]).toBe('Hypoxic gas as low as 0.102 for 47 sec'); // add 5th segment maintainDepthPage = await diveOverviewPage.addMaintainDepthSegment(); - expect(await maintainDepthPage.currentStats.getCurrentDepth()).toBe('100m'); - expect(await maintainDepthPage.currentStats.getNoDecoLimit()).toBe('0 sec'); - expect(await maintainDepthPage.currentStats.getCurrentCeiling()).toBe('10m'); - expect(await maintainDepthPage.currentStats.getCurrentGas()).toBe('Trimix 10/70 (O2: 10%, He: 70%, N2: 20%)'); - expect(await maintainDepthPage.currentStats.getCurrentMaxDepthPO2()).toBe('130m (150m deco)'); - expect(await maintainDepthPage.currentStats.getCurrentMaxDepthEND()).toBe('123m'); - expect(await maintainDepthPage.currentStats.getCurrentMinDepthHypoxia()).toBe('8m'); - expect(await maintainDepthPage.currentStats.getCurrentPO2()).toBe('1.10'); - expect(await maintainDepthPage.currentStats.getCurrentEND()).toBe('23m'); + expect.soft(await maintainDepthPage.currentStats.getCurrentDepth()).toBe('100m'); + expect.soft(await maintainDepthPage.currentStats.getNoDecoLimit()).toBe('0 sec'); + expect.soft(await maintainDepthPage.currentStats.getCurrentCeiling()).toBe('14m'); + expect.soft(await maintainDepthPage.currentStats.getCurrentGas()).toBe('Trimix 10/70 (O2: 10%, He: 70%, N2: 20%)'); + expect.soft(await maintainDepthPage.currentStats.getCurrentMaxDepthPO2()).toBe('130m (150m deco)'); + expect.soft(await maintainDepthPage.currentStats.getCurrentMaxDepthEND()).toBe('123m'); + expect.soft(await maintainDepthPage.currentStats.getCurrentMinDepthHypoxia()).toBe('8m'); + expect.soft(await maintainDepthPage.currentStats.getCurrentPO2()).toBe('1.10'); + expect.soft(await maintainDepthPage.currentStats.getCurrentEND()).toBe('23m'); await maintainDepthPage.setTimeAtDepth(30); - expect(await maintainDepthPage.getTotalDiveDuration()).toBe('36 min'); - expect(await maintainDepthPage.getNewNDL()).toBe('0 sec'); - expect(await maintainDepthPage.getNewCeiling()).toBe('43m'); + expect.soft(await maintainDepthPage.getTotalDiveDuration()).toBe('36 min'); + expect.soft(await maintainDepthPage.getNewNDL()).toBe('0 sec'); + expect.soft(await maintainDepthPage.getNewCeiling()).toBe('46m'); diveOverviewPage = await maintainDepthPage.Save(); diveSegments = await diveOverviewPage.getDiveSegments(); - expect(diveSegments[5].heading).toBe('arrow_forward 6:00 Maintain Depth at 100m'); - expect(diveSegments[5].details).toBe('Time: 30 min'); - expect(diveSegments[6].heading).toBe('done 36:00 Surface'); - expect(diveSegments[6].details).toBe('Ascent time: 10 min @ 10m/min'); + expect.soft(diveSegments[5].heading).toBe('arrow_forward 6:00 Maintain Depth at 100m'); + expect.soft(diveSegments[5].details).toBe('Time: 30 min'); + expect.soft(diveSegments[6].heading).toBe('done 36:00 Surface'); + expect.soft(diveSegments[6].details).toBe('Ascent time: 10 min @ 10m/min'); - expect(await diveOverviewPage.getDiveDuration()).toBe('46 min'); - expect(await diveOverviewPage.getMaxDepth()).toBe('100m'); - expect(await diveOverviewPage.getAverageDepth()).toBe('82m'); + expect.soft(await diveOverviewPage.getDiveDuration()).toBe('46 min'); + expect.soft(await diveOverviewPage.getMaxDepth()).toBe('100m'); + expect.soft(await diveOverviewPage.getAverageDepth()).toBe('82m'); diveErrors = await diveOverviewPage.getDiveErrors(); - expect(diveErrors.length).toBe(2); - expect(diveErrors[0]).toBe('Exceeded ceiling by up to 34.2m for 4 min 17 sec'); - expect(diveErrors[1]).toBe('Hypoxic gas as low as 0.102 for 47 sec'); + expect.soft(diveErrors.length).toBe(2); + expect.soft(diveErrors[0]).toBe('Exceeded ceiling by up to 37.2m for 4 min 32 sec'); + expect.soft(diveErrors[1]).toBe('Hypoxic gas as low as 0.102 for 47 sec'); // add 6th segment changeDepthPage = await diveOverviewPage.addChangeDepthSegment(); - expect(await changeDepthPage.currentStats.getCurrentDepth()).toBe('100m'); - expect(await changeDepthPage.currentStats.getNoDecoLimit()).toBe('0 sec'); - expect(await changeDepthPage.currentStats.getCurrentCeiling()).toBe('43m'); - expect(await changeDepthPage.currentStats.getCurrentGas()).toBe('Trimix 10/70 (O2: 10%, He: 70%, N2: 20%)'); - expect(await changeDepthPage.currentStats.getCurrentMaxDepthPO2()).toBe('130m (150m deco)'); - expect(await changeDepthPage.currentStats.getCurrentMaxDepthEND()).toBe('123m'); - expect(await changeDepthPage.currentStats.getCurrentMinDepthHypoxia()).toBe('8m'); - expect(await changeDepthPage.currentStats.getCurrentPO2()).toBe('1.10'); - expect(await changeDepthPage.currentStats.getCurrentEND()).toBe('23m'); - - await changeDepthPage.setNewDepth(43); - expect(await changeDepthPage.getAscentTime()).toBe('5 min 42 sec @ 10m/min'); - expect(await changeDepthPage.getNewDepthPO2()).toBe('0.53'); - expect(await changeDepthPage.getNewDepthEND()).toBe('6m'); - expect(await changeDepthPage.getNewDepthNDL()).toBe('0 sec'); - expect(await changeDepthPage.getNewDepthCeiling()).toBe('43m'); + expect.soft(await changeDepthPage.currentStats.getCurrentDepth()).toBe('100m'); + expect.soft(await changeDepthPage.currentStats.getNoDecoLimit()).toBe('0 sec'); + expect.soft(await changeDepthPage.currentStats.getCurrentCeiling()).toBe('46m'); + expect.soft(await changeDepthPage.currentStats.getCurrentGas()).toBe('Trimix 10/70 (O2: 10%, He: 70%, N2: 20%)'); + expect.soft(await changeDepthPage.currentStats.getCurrentMaxDepthPO2()).toBe('130m (150m deco)'); + expect.soft(await changeDepthPage.currentStats.getCurrentMaxDepthEND()).toBe('123m'); + expect.soft(await changeDepthPage.currentStats.getCurrentMinDepthHypoxia()).toBe('8m'); + expect.soft(await changeDepthPage.currentStats.getCurrentPO2()).toBe('1.10'); + expect.soft(await changeDepthPage.currentStats.getCurrentEND()).toBe('23m'); + + await changeDepthPage.setNewDepth(46); + expect.soft(await changeDepthPage.getAscentTime()).toBe('5 min 24 sec @ 10m/min'); + expect.soft(await changeDepthPage.getNewDepthPO2()).toBe('0.56'); + expect.soft(await changeDepthPage.getNewDepthEND()).toBe('7m'); + expect.soft(await changeDepthPage.getNewDepthNDL()).toBe('0 sec'); + expect.soft(await changeDepthPage.getNewDepthCeiling()).toBe('46m'); diveOverviewPage = await changeDepthPage.Save(); diveSegments = await diveOverviewPage.getDiveSegments(); - expect(diveSegments[6].heading).toBe('arrow_upward 36:00 Ascend to 43m'); - expect(diveSegments[6].details).toBe('Ascent time: 5 min 42 sec @ 10m/min'); - expect(diveSegments[7].heading).toBe('done 41:42 Surface'); - expect(diveSegments[7].details).toBe('Ascent time: 4 min 18 sec @ 10m/min'); + expect.soft(diveSegments[6].heading).toBe('arrow_upward 36:00 Ascend to 46m'); + expect.soft(diveSegments[6].details).toBe('Ascent time: 5 min 24 sec @ 10m/min'); + expect.soft(diveSegments[7].heading).toBe('done 41:24 Surface'); + expect.soft(diveSegments[7].details).toBe('Ascent time: 4 min 36 sec @ 10m/min'); - expect(await diveOverviewPage.getDiveDuration()).toBe('46 min'); - expect(await diveOverviewPage.getMaxDepth()).toBe('100m'); - expect(await diveOverviewPage.getAverageDepth()).toBe('82m'); + expect.soft(await diveOverviewPage.getDiveDuration()).toBe('46 min'); + expect.soft(await diveOverviewPage.getMaxDepth()).toBe('100m'); + expect.soft(await diveOverviewPage.getAverageDepth()).toBe('82m'); diveErrors = await diveOverviewPage.getDiveErrors(); - expect(diveErrors.length).toBe(2); - expect(diveErrors[0]).toBe('Exceeded ceiling by up to 34.2m for 4 min 17 sec'); - expect(diveErrors[1]).toBe('Hypoxic gas as low as 0.102 for 47 sec'); + expect.soft(diveErrors.length).toBe(2); + expect.soft(diveErrors[0]).toBe('Exceeded ceiling by up to 37.2m for 4 min 32 sec'); + expect.soft(diveErrors[1]).toBe('Hypoxic gas as low as 0.102 for 47 sec'); // add 7th segment changeGasPage = await diveOverviewPage.addChangeGasSegment(); - expect(await changeGasPage.currentStats.getCurrentDepth()).toBe('43m'); - expect(await changeGasPage.currentStats.getNoDecoLimit()).toBe('0 sec'); - expect(await changeGasPage.currentStats.getCurrentCeiling()).toBe('43m'); - expect(await changeGasPage.currentStats.getCurrentGas()).toBe('Trimix 10/70 (O2: 10%, He: 70%, N2: 20%)'); - expect(await changeGasPage.currentStats.getCurrentMaxDepthPO2()).toBe('130m (150m deco)'); - expect(await changeGasPage.currentStats.getCurrentMaxDepthEND()).toBe('123m'); - expect(await changeGasPage.currentStats.getCurrentMinDepthHypoxia()).toBe('8m'); - expect(await changeGasPage.currentStats.getCurrentPO2()).toBe('0.53'); - expect(await changeGasPage.currentStats.getCurrentEND()).toBe('6m'); - - expect(await changeGasPage.getOptimalDecoGas()).toBe('Custom (O2: 30%, He: 25%, N2: 45%)'); + expect.soft(await changeGasPage.currentStats.getCurrentDepth()).toBe('46m'); + expect.soft(await changeGasPage.currentStats.getNoDecoLimit()).toBe('0 sec'); + expect.soft(await changeGasPage.currentStats.getCurrentCeiling()).toBe('46m'); + expect.soft(await changeGasPage.currentStats.getCurrentGas()).toBe('Trimix 10/70 (O2: 10%, He: 70%, N2: 20%)'); + expect.soft(await changeGasPage.currentStats.getCurrentMaxDepthPO2()).toBe('130m (150m deco)'); + expect.soft(await changeGasPage.currentStats.getCurrentMaxDepthEND()).toBe('123m'); + expect.soft(await changeGasPage.currentStats.getCurrentMinDepthHypoxia()).toBe('8m'); + expect.soft(await changeGasPage.currentStats.getCurrentPO2()).toBe('0.56'); + expect.soft(await changeGasPage.currentStats.getCurrentEND()).toBe('7m'); + + expect.soft(await changeGasPage.getOptimalDecoGas()).toBe('Custom (O2: 28%, He: 29%, N2: 43%)'); await changeGasPage.selectOptimalDecoGas(); - expect(await changeGasPage.getNewGasPO2()).toBe('1.59'); - expect(await changeGasPage.isNewGasPO2Warning()).toBe(true); - expect(await changeGasPage.getNewGasEND()).toBe('30m'); - expect(await changeGasPage.getNewGasNoDecoLimit()).toBe('0 sec'); - expect(await changeGasPage.getNewGasMaxDepthPO2()).toBe('36m (43m deco)'); - expect(await changeGasPage.getNewGasMaxDepthEND()).toBe('43m'); - expect(await changeGasPage.getNewGasMinDepthHypoxia()).toBe('0m'); + expect.soft(await changeGasPage.getNewGasPO2()).toBe('1.57'); + expect.soft(await changeGasPage.isNewGasPO2Warning()).toBe(true); + expect.soft(await changeGasPage.getNewGasEND()).toBe('30m'); + expect.soft(await changeGasPage.getNewGasNoDecoLimit()).toBe('0 sec'); + expect.soft(await changeGasPage.getNewGasMaxDepthPO2()).toBe('40m (47m deco)'); + expect.soft(await changeGasPage.getNewGasMaxDepthEND()).toBe('46m'); + expect.soft(await changeGasPage.getNewGasMinDepthHypoxia()).toBe('0m'); diveOverviewPage = await changeGasPage.Save(); diveSegments = await diveOverviewPage.getDiveSegments(); - expect(diveSegments[7].heading).toBe('air 41:42 Switch Gas'); - expect(diveSegments[7].details).toBe('Custom (O2: 30%, He: 25%, N2: 45%)'); - expect(diveSegments[8].heading).toBe('done 41:42 Surface'); - expect(diveSegments[8].details).toBe('Ascent time: 4 min 18 sec @ 10m/min'); + expect.soft(diveSegments[7].heading).toBe('air 41:24 Switch Gas'); + expect.soft(diveSegments[7].details).toBe('Custom (O2: 28%, He: 29%, N2: 43%)'); + expect.soft(diveSegments[8].heading).toBe('done 41:24 Surface'); + expect.soft(diveSegments[8].details).toBe('Ascent time: 4 min 36 sec @ 10m/min'); - expect(await diveOverviewPage.getDiveDuration()).toBe('46 min'); - expect(await diveOverviewPage.getMaxDepth()).toBe('100m'); - expect(await diveOverviewPage.getAverageDepth()).toBe('82m'); + expect.soft(await diveOverviewPage.getDiveDuration()).toBe('46 min'); + expect.soft(await diveOverviewPage.getMaxDepth()).toBe('100m'); + expect.soft(await diveOverviewPage.getAverageDepth()).toBe('82m'); diveErrors = await diveOverviewPage.getDiveErrors(); - expect(diveErrors.length).toBe(1); - expect(diveErrors[0]).toBe('Exceeded ceiling by up to 32.7m for 4 min 16 sec'); + expect.soft(diveErrors.length).toBe(1); + expect.soft(diveErrors[0]).toBe('Exceeded ceiling by up to 35.7m for 4 min 32 sec'); // add 8th segment maintainDepthPage = await diveOverviewPage.addMaintainDepthSegment(); - expect(await maintainDepthPage.currentStats.getCurrentDepth()).toBe('43m'); - expect(await maintainDepthPage.currentStats.getNoDecoLimit()).toBe('0 sec'); - expect(await maintainDepthPage.currentStats.getCurrentCeiling()).toBe('43m'); - expect(await maintainDepthPage.currentStats.getCurrentGas()).toBe('Custom (O2: 30%, He: 25%, N2: 45%)'); - expect(await maintainDepthPage.currentStats.getCurrentMaxDepthPO2()).toBe('36m (43m deco)'); - expect(await maintainDepthPage.currentStats.getCurrentMaxDepthEND()).toBe('43m'); - expect(await maintainDepthPage.currentStats.getCurrentMinDepthHypoxia()).toBe('0m'); - expect(await maintainDepthPage.currentStats.getCurrentPO2()).toBe('1.59'); - expect(await maintainDepthPage.currentStats.isCurrentPO2Warning()).toBe(true); - expect(await maintainDepthPage.currentStats.getCurrentEND()).toBe('30m'); + expect.soft(await maintainDepthPage.currentStats.getCurrentDepth()).toBe('46m'); + expect.soft(await maintainDepthPage.currentStats.getNoDecoLimit()).toBe('0 sec'); + expect.soft(await maintainDepthPage.currentStats.getCurrentCeiling()).toBe('46m'); + expect.soft(await maintainDepthPage.currentStats.getCurrentGas()).toBe('Custom (O2: 28%, He: 29%, N2: 43%)'); + expect.soft(await maintainDepthPage.currentStats.getCurrentMaxDepthPO2()).toBe('40m (47m deco)'); + expect.soft(await maintainDepthPage.currentStats.getCurrentMaxDepthEND()).toBe('46m'); + expect.soft(await maintainDepthPage.currentStats.getCurrentMinDepthHypoxia()).toBe('0m'); + expect.soft(await maintainDepthPage.currentStats.getCurrentPO2()).toBe('1.57'); + expect.soft(await maintainDepthPage.currentStats.isCurrentPO2Warning()).toBe(true); + expect.soft(await maintainDepthPage.currentStats.getCurrentEND()).toBe('30m'); await maintainDepthPage.setTimeAtDepth(20); - expect(await maintainDepthPage.getTotalDiveDuration()).toBe('61 min 42 sec'); - expect(await maintainDepthPage.getNewNDL()).toBe('0 sec'); - expect(await maintainDepthPage.getNewCeiling()).toBe('22m'); + expect.soft(await maintainDepthPage.getTotalDiveDuration()).toBe('61 min 24 sec'); + expect.soft(await maintainDepthPage.getNewNDL()).toBe('0 sec'); + expect.soft(await maintainDepthPage.getNewCeiling()).toBe('26m'); let decoMilestones = await maintainDepthPage.getDecoMilestones(); - expect(decoMilestones[0]).toBe('3 min 45 sec : Helitrox 35/25 @ 35m'); - expect(decoMilestones[1]).toBe('8 min 8 sec : Air @ 30m'); - expect(decoMilestones[2]).toBe('8 min 8 sec : Nitrox 32 @ 30m'); - expect(decoMilestones[3]).toBe('20 min 25 sec : Nitrox 50 @ 22m'); + expect.soft(decoMilestones[0]).toBe('1 min 9 sec : Helitrox 25/25 @ 43m'); + expect.soft(decoMilestones[1]).toBe('6 min 55 sec : Helitrox 35/25 @ 35m'); + expect.soft(decoMilestones[2]).toBe('13 min 1 sec : Air @ 30m'); + expect.soft(decoMilestones[3]).toBe('13 min 1 sec : Nitrox 32 @ 30m'); + expect.soft(decoMilestones[4]).toBe('38 min 38 sec : Nitrox 50 @ 22m'); diveOverviewPage = await maintainDepthPage.Save(); diveSegments = await diveOverviewPage.getDiveSegments(); - expect(diveSegments[8].heading).toBe('arrow_forward 41:42 Maintain Depth at 43m'); - expect(diveSegments[8].details).toBe('Time: 20 min'); - expect(diveSegments[9].heading).toBe('done 1:01:42 Surface'); - expect(diveSegments[9].details).toBe('Ascent time: 4 min 18 sec @ 10m/min'); + expect.soft(diveSegments[8].heading).toBe('arrow_forward 41:24 Maintain Depth at 46m'); + expect.soft(diveSegments[8].details).toBe('Time: 20 min'); + expect.soft(diveSegments[9].heading).toBe('done 1:01:24 Surface'); + expect.soft(diveSegments[9].details).toBe('Ascent time: 4 min 36 sec @ 10m/min'); - expect(await diveOverviewPage.getDiveDuration()).toBe('66 min'); - expect(await diveOverviewPage.getMaxDepth()).toBe('100m'); - expect(await diveOverviewPage.getAverageDepth()).toBe('70m'); + expect.soft(await diveOverviewPage.getDiveDuration()).toBe('66 min'); + expect.soft(await diveOverviewPage.getMaxDepth()).toBe('100m'); + expect.soft(await diveOverviewPage.getAverageDepth()).toBe('71m'); diveErrors = await diveOverviewPage.getDiveErrors(); - expect(diveErrors.length).toBe(1); - expect(diveErrors[0]).toBe('Exceeded ceiling by up to 19.3m for 2 min 6 sec'); + expect.soft(diveErrors.length).toBe(1); + expect.soft(diveErrors[0]).toBe('Exceeded ceiling by up to 23.5m for 2 min 33 sec'); // add 9th segment changeDepthPage = await diveOverviewPage.addChangeDepthSegment(); - expect(await changeDepthPage.currentStats.getCurrentDepth()).toBe('43m'); - expect(await changeDepthPage.currentStats.getNoDecoLimit()).toBe('0 sec'); - expect(await changeDepthPage.currentStats.getCurrentCeiling()).toBe('22m'); - expect(await changeDepthPage.currentStats.getCurrentGas()).toBe('Custom (O2: 30%, He: 25%, N2: 45%)'); - expect(await changeDepthPage.currentStats.getCurrentMaxDepthPO2()).toBe('36m (43m deco)'); - expect(await changeDepthPage.currentStats.getCurrentMaxDepthEND()).toBe('43m'); - expect(await changeDepthPage.currentStats.getCurrentMinDepthHypoxia()).toBe('0m'); - expect(await changeDepthPage.currentStats.getCurrentPO2()).toBe('1.59'); - expect(await changeDepthPage.currentStats.isCurrentPO2Warning()).toBe(true); - expect(await changeDepthPage.currentStats.getCurrentEND()).toBe('30m'); - - await changeDepthPage.setNewDepth(22); - expect(await changeDepthPage.getAscentTime()).toBe('2 min 6 sec @ 10m/min'); - expect(await changeDepthPage.getNewDepthPO2()).toBe('0.96'); - expect(await changeDepthPage.getNewDepthEND()).toBe('14m'); - expect(await changeDepthPage.getNewDepthNDL()).toBe('0 sec'); - expect(await changeDepthPage.getNewDepthCeiling()).toBe('22m'); + expect.soft(await changeDepthPage.currentStats.getCurrentDepth()).toBe('46m'); + expect.soft(await changeDepthPage.currentStats.getNoDecoLimit()).toBe('0 sec'); + expect.soft(await changeDepthPage.currentStats.getCurrentCeiling()).toBe('26m'); + expect.soft(await changeDepthPage.currentStats.getCurrentGas()).toBe('Custom (O2: 28%, He: 29%, N2: 43%)'); + expect.soft(await changeDepthPage.currentStats.getCurrentMaxDepthPO2()).toBe('40m (47m deco)'); + expect.soft(await changeDepthPage.currentStats.getCurrentMaxDepthEND()).toBe('46m'); + expect.soft(await changeDepthPage.currentStats.getCurrentMinDepthHypoxia()).toBe('0m'); + expect.soft(await changeDepthPage.currentStats.getCurrentPO2()).toBe('1.57'); + expect.soft(await changeDepthPage.currentStats.isCurrentPO2Warning()).toBe(true); + expect.soft(await changeDepthPage.currentStats.getCurrentEND()).toBe('30m'); + + await changeDepthPage.setNewDepth(26); + expect.soft(await changeDepthPage.getAscentTime()).toBe('2 min @ 10m/min'); + expect.soft(await changeDepthPage.getNewDepthPO2()).toBe('1.01'); + expect.soft(await changeDepthPage.getNewDepthEND()).toBe('16m'); + expect.soft(await changeDepthPage.getNewDepthNDL()).toBe('0 sec'); + expect.soft(await changeDepthPage.getNewDepthCeiling()).toBe('26m'); diveOverviewPage = await changeDepthPage.Save(); diveSegments = await diveOverviewPage.getDiveSegments(); - expect(diveSegments[9].heading).toBe('arrow_upward 1:01:42 Ascend to 22m'); - expect(diveSegments[9].details).toBe('Ascent time: 2 min 6 sec @ 10m/min'); - expect(diveSegments[10].heading).toBe('done 1:03:48 Surface'); - expect(diveSegments[10].details).toBe('Ascent time: 2 min 12 sec @ 10m/min'); + expect.soft(diveSegments[9].heading).toBe('arrow_upward 1:01:24 Ascend to 26m'); + expect.soft(diveSegments[9].details).toBe('Ascent time: 2 min @ 10m/min'); + expect.soft(diveSegments[10].heading).toBe('done 1:03:24 Surface'); + expect.soft(diveSegments[10].details).toBe('Ascent time: 2 min 36 sec @ 10m/min'); - expect(await diveOverviewPage.getDiveDuration()).toBe('66 min'); - expect(await diveOverviewPage.getMaxDepth()).toBe('100m'); - expect(await diveOverviewPage.getAverageDepth()).toBe('70m'); + expect.soft(await diveOverviewPage.getDiveDuration()).toBe('66 min'); + expect.soft(await diveOverviewPage.getMaxDepth()).toBe('100m'); + expect.soft(await diveOverviewPage.getAverageDepth()).toBe('71m'); diveErrors = await diveOverviewPage.getDiveErrors(); - expect(diveErrors.length).toBe(1); - expect(diveErrors[0]).toBe('Exceeded ceiling by up to 19.3m for 2 min 6 sec'); + expect.soft(diveErrors.length).toBe(1); + expect.soft(diveErrors[0]).toBe('Exceeded ceiling by up to 23.5m for 2 min 33 sec'); // add 10th segment changeGasPage = await diveOverviewPage.addChangeGasSegment(); - expect(await changeGasPage.currentStats.getCurrentDepth()).toBe('22m'); - expect(await changeGasPage.currentStats.getNoDecoLimit()).toBe('0 sec'); - expect(await changeGasPage.currentStats.getCurrentCeiling()).toBe('22m'); - expect(await changeGasPage.currentStats.getCurrentGas()).toBe('Custom (O2: 30%, He: 25%, N2: 45%)'); - expect(await changeGasPage.currentStats.getCurrentMaxDepthPO2()).toBe('36m (43m deco)'); - expect(await changeGasPage.currentStats.getCurrentMaxDepthEND()).toBe('43m'); - expect(await changeGasPage.currentStats.getCurrentMinDepthHypoxia()).toBe('0m'); - expect(await changeGasPage.currentStats.getCurrentPO2()).toBe('0.96'); - expect(await changeGasPage.currentStats.isCurrentPO2Warning()).toBe(false); - expect(await changeGasPage.currentStats.getCurrentEND()).toBe('14m'); - - expect(await changeGasPage.getOptimalDecoGas()).toBe('Nitrox 50 (O2: 50%, He: 0%, N2: 50%)'); + expect.soft(await changeGasPage.currentStats.getCurrentDepth()).toBe('26m'); + expect.soft(await changeGasPage.currentStats.getNoDecoLimit()).toBe('0 sec'); + expect.soft(await changeGasPage.currentStats.getCurrentCeiling()).toBe('26m'); + expect.soft(await changeGasPage.currentStats.getCurrentGas()).toBe('Custom (O2: 28%, He: 29%, N2: 43%)'); + expect.soft(await changeGasPage.currentStats.getCurrentMaxDepthPO2()).toBe('40m (47m deco)'); + expect.soft(await changeGasPage.currentStats.getCurrentMaxDepthEND()).toBe('46m'); + expect.soft(await changeGasPage.currentStats.getCurrentMinDepthHypoxia()).toBe('0m'); + expect.soft(await changeGasPage.currentStats.getCurrentPO2()).toBe('1.01'); + expect.soft(await changeGasPage.currentStats.isCurrentPO2Warning()).toBe(false); + expect.soft(await changeGasPage.currentStats.getCurrentEND()).toBe('16m'); + + expect.soft(await changeGasPage.getOptimalDecoGas()).toBe('Custom (O2: 44%, He: 0%, N2: 56%)'); await changeGasPage.selectOptimalDecoGas(); - expect(await changeGasPage.getNewGasPO2()).toBe('1.60'); - expect(await changeGasPage.isNewGasPO2Warning()).toBe(true); - expect(await changeGasPage.getNewGasEND()).toBe('22m'); - expect(await changeGasPage.getNewGasNoDecoLimit()).toBe('0 sec'); - expect(await changeGasPage.getNewGasMaxDepthPO2()).toBe('18m (22m deco)'); - expect(await changeGasPage.getNewGasMaxDepthEND()).toBe('30m'); - expect(await changeGasPage.getNewGasMinDepthHypoxia()).toBe('0m'); + expect.soft(await changeGasPage.getNewGasPO2()).toBe('1.58'); + expect.soft(await changeGasPage.isNewGasPO2Warning()).toBe(true); + expect.soft(await changeGasPage.getNewGasEND()).toBe('26m'); + expect.soft(await changeGasPage.getNewGasNoDecoLimit()).toBe('0 sec'); + expect.soft(await changeGasPage.getNewGasMaxDepthPO2()).toBe('21m (26m deco)'); + expect.soft(await changeGasPage.getNewGasMaxDepthEND()).toBe('30m'); + expect.soft(await changeGasPage.getNewGasMinDepthHypoxia()).toBe('0m'); diveOverviewPage = await changeGasPage.Save(); diveSegments = await diveOverviewPage.getDiveSegments(); - expect(diveSegments[10].heading).toBe('air 1:03:48 Switch Gas'); - expect(diveSegments[10].details).toBe('Nitrox 50 (O2: 50%, He: 0%, N2: 50%)'); - expect(diveSegments[11].heading).toBe('done 1:03:48 Surface'); - expect(diveSegments[11].details).toBe('Ascent time: 2 min 12 sec @ 10m/min'); + expect.soft(diveSegments[10].heading).toBe('air 1:03:24 Switch Gas'); + expect.soft(diveSegments[10].details).toBe('Custom (O2: 44%, He: 0%, N2: 56%)'); + expect.soft(diveSegments[11].heading).toBe('done 1:03:24 Surface'); + expect.soft(diveSegments[11].details).toBe('Ascent time: 2 min 36 sec @ 10m/min'); - expect(await diveOverviewPage.getDiveDuration()).toBe('66 min'); - expect(await diveOverviewPage.getMaxDepth()).toBe('100m'); - expect(await diveOverviewPage.getAverageDepth()).toBe('70m'); + expect.soft(await diveOverviewPage.getDiveDuration()).toBe('66 min'); + expect.soft(await diveOverviewPage.getMaxDepth()).toBe('100m'); + expect.soft(await diveOverviewPage.getAverageDepth()).toBe('71m'); diveErrors = await diveOverviewPage.getDiveErrors(); - expect(diveErrors.length).toBe(1); - expect(diveErrors[0]).toBe('Exceeded ceiling by up to 19.0m for 2 min 5 sec'); + expect.soft(diveErrors.length).toBe(1); + expect.soft(diveErrors[0]).toBe('Exceeded ceiling by up to 23.2m for 2 min 33 sec'); // add 11th segment maintainDepthPage = await diveOverviewPage.addMaintainDepthSegment(); - expect(await maintainDepthPage.currentStats.getCurrentDepth()).toBe('22m'); - expect(await maintainDepthPage.currentStats.getNoDecoLimit()).toBe('0 sec'); - expect(await maintainDepthPage.currentStats.getCurrentCeiling()).toBe('22m'); - expect(await maintainDepthPage.currentStats.getCurrentGas()).toBe('Nitrox 50 (O2: 50%, He: 0%, N2: 50%)'); - expect(await maintainDepthPage.currentStats.getCurrentMaxDepthPO2()).toBe('18m (22m deco)'); - expect(await maintainDepthPage.currentStats.getCurrentMaxDepthEND()).toBe('30m'); - expect(await maintainDepthPage.currentStats.getCurrentMinDepthHypoxia()).toBe('0m'); - expect(await maintainDepthPage.currentStats.getCurrentPO2()).toBe('1.60'); - expect(await maintainDepthPage.currentStats.isCurrentPO2Warning()).toBe(true); - expect(await maintainDepthPage.currentStats.getCurrentEND()).toBe('22m'); - - await maintainDepthPage.setTimeAtDepth(41); - expect(await maintainDepthPage.getTotalDiveDuration()).toBe('104 min 48 sec'); - expect(await maintainDepthPage.getNewNDL()).toBe('0 sec'); - expect(await maintainDepthPage.getNewCeiling()).toBe('6m'); + expect.soft(await maintainDepthPage.currentStats.getCurrentDepth()).toBe('26m'); + expect.soft(await maintainDepthPage.currentStats.getNoDecoLimit()).toBe('0 sec'); + expect.soft(await maintainDepthPage.currentStats.getCurrentCeiling()).toBe('26m'); + expect.soft(await maintainDepthPage.currentStats.getCurrentGas()).toBe('Custom (O2: 44%, He: 0%, N2: 56%)'); + expect.soft(await maintainDepthPage.currentStats.getCurrentMaxDepthPO2()).toBe('21m (26m deco)'); + expect.soft(await maintainDepthPage.currentStats.getCurrentMaxDepthEND()).toBe('30m'); + expect.soft(await maintainDepthPage.currentStats.getCurrentMinDepthHypoxia()).toBe('0m'); + expect.soft(await maintainDepthPage.currentStats.getCurrentPO2()).toBe('1.58'); + expect.soft(await maintainDepthPage.currentStats.isCurrentPO2Warning()).toBe(true); + expect.soft(await maintainDepthPage.currentStats.getCurrentEND()).toBe('26m'); + + await maintainDepthPage.setTimeAtDepth(106); + expect.soft(await maintainDepthPage.getTotalDiveDuration()).toBe('169 min 24 sec'); + expect.soft(await maintainDepthPage.getNewNDL()).toBe('0 sec'); + expect.soft(await maintainDepthPage.getNewCeiling()).toBe('6m'); decoMilestones = await maintainDepthPage.getDecoMilestones(); - expect(decoMilestones[0]).toBe('41 min 39 sec : Oxygen @ 6m'); + expect.soft(decoMilestones[0]).toBe('5 min 20 sec : Nitrox 50 @ 22m'); + expect.soft(decoMilestones[1]).toBe('106 min 56 sec : Oxygen @ 6m'); diveOverviewPage = await maintainDepthPage.Save(); diveSegments = await diveOverviewPage.getDiveSegments(); - expect(diveSegments[11].heading).toBe('arrow_forward 1:03:48 Maintain Depth at 22m'); - expect(diveSegments[11].details).toBe('Time: 41 min'); - expect(diveSegments[12].heading).toBe('done 1:44:48 Surface'); - expect(diveSegments[12].details).toBe('Ascent time: 2 min 12 sec @ 10m/min'); + expect.soft(diveSegments[11].heading).toBe('arrow_forward 1:03:24 Maintain Depth at 26m'); + expect.soft(diveSegments[11].details).toBe('Time: 106 min'); + expect.soft(diveSegments[12].heading).toBe('done 2:49:24 Surface'); + expect.soft(diveSegments[12].details).toBe('Ascent time: 2 min 36 sec @ 10m/min'); - expect(await diveOverviewPage.getDiveDuration()).toBe('107 min'); - expect(await diveOverviewPage.getMaxDepth()).toBe('100m'); - expect(await diveOverviewPage.getAverageDepth()).toBe('52m'); + expect.soft(await diveOverviewPage.getDiveDuration()).toBe('172 min'); + expect.soft(await diveOverviewPage.getMaxDepth()).toBe('100m'); + expect.soft(await diveOverviewPage.getAverageDepth()).toBe('43m'); diveErrors = await diveOverviewPage.getDiveErrors(); - expect(diveErrors.length).toBe(1); - expect(diveErrors[0]).toBe('Exceeded ceiling by up to 5.5m for 34 sec'); + expect.soft(diveErrors.length).toBe(1); + expect.soft(diveErrors[0]).toBe('Exceeded ceiling by up to 5.7m for 35 sec'); // add 12th segment changeDepthPage = await diveOverviewPage.addChangeDepthSegment(); - expect(await changeDepthPage.currentStats.getCurrentDepth()).toBe('22m'); - expect(await changeDepthPage.currentStats.getNoDecoLimit()).toBe('0 sec'); - expect(await changeDepthPage.currentStats.getCurrentCeiling()).toBe('6m'); - expect(await changeDepthPage.currentStats.getCurrentGas()).toBe('Nitrox 50 (O2: 50%, He: 0%, N2: 50%)'); - expect(await changeDepthPage.currentStats.getCurrentMaxDepthPO2()).toBe('18m (22m deco)'); - expect(await changeDepthPage.currentStats.getCurrentMaxDepthEND()).toBe('30m'); - expect(await changeDepthPage.currentStats.getCurrentMinDepthHypoxia()).toBe('0m'); - expect(await changeDepthPage.currentStats.getCurrentPO2()).toBe('1.60'); - expect(await changeDepthPage.currentStats.isCurrentPO2Warning()).toBe(true); - expect(await changeDepthPage.currentStats.getCurrentEND()).toBe('22m'); + expect.soft(await changeDepthPage.currentStats.getCurrentDepth()).toBe('26m'); + expect.soft(await changeDepthPage.currentStats.getNoDecoLimit()).toBe('0 sec'); + expect.soft(await changeDepthPage.currentStats.getCurrentCeiling()).toBe('6m'); + expect.soft(await changeDepthPage.currentStats.getCurrentGas()).toBe('Custom (O2: 44%, He: 0%, N2: 56%)'); + expect.soft(await changeDepthPage.currentStats.getCurrentMaxDepthPO2()).toBe('21m (26m deco)'); + expect.soft(await changeDepthPage.currentStats.getCurrentMaxDepthEND()).toBe('30m'); + expect.soft(await changeDepthPage.currentStats.getCurrentMinDepthHypoxia()).toBe('0m'); + expect.soft(await changeDepthPage.currentStats.getCurrentPO2()).toBe('1.58'); + expect.soft(await changeDepthPage.currentStats.isCurrentPO2Warning()).toBe(true); + expect.soft(await changeDepthPage.currentStats.getCurrentEND()).toBe('26m'); await changeDepthPage.setNewDepth(6); - expect(await changeDepthPage.getAscentTime()).toBe('1 min 36 sec @ 10m/min'); - expect(await changeDepthPage.getNewDepthPO2()).toBe('0.80'); - expect(await changeDepthPage.getNewDepthEND()).toBe('6m'); - expect(await changeDepthPage.getNewDepthNDL()).toBe('0 sec'); - expect(await changeDepthPage.getNewDepthCeiling()).toBe('6m'); + expect.soft(await changeDepthPage.getAscentTime()).toBe('2 min @ 10m/min'); + expect.soft(await changeDepthPage.getNewDepthPO2()).toBe('0.70'); + expect.soft(await changeDepthPage.getNewDepthEND()).toBe('6m'); + expect.soft(await changeDepthPage.getNewDepthNDL()).toBe('0 sec'); + expect.soft(await changeDepthPage.getNewDepthCeiling()).toBe('6m'); diveOverviewPage = await changeDepthPage.Save(); diveSegments = await diveOverviewPage.getDiveSegments(); - expect(diveSegments[12].heading).toBe('arrow_upward 1:44:48 Ascend to 6m'); - expect(diveSegments[12].details).toBe('Ascent time: 1 min 36 sec @ 10m/min'); - expect(diveSegments[13].heading).toBe('done 1:46:24 Surface'); - expect(diveSegments[13].details).toBe('Ascent time: 36 sec @ 10m/min'); + expect.soft(diveSegments[12].heading).toBe('arrow_upward 2:49:24 Ascend to 6m'); + expect.soft(diveSegments[12].details).toBe('Ascent time: 2 min @ 10m/min'); + expect.soft(diveSegments[13].heading).toBe('done 2:51:24 Surface'); + expect.soft(diveSegments[13].details).toBe('Ascent time: 36 sec @ 10m/min'); - expect(await diveOverviewPage.getDiveDuration()).toBe('107 min'); - expect(await diveOverviewPage.getMaxDepth()).toBe('100m'); - expect(await diveOverviewPage.getAverageDepth()).toBe('52m'); + expect.soft(await diveOverviewPage.getDiveDuration()).toBe('172 min'); + expect.soft(await diveOverviewPage.getMaxDepth()).toBe('100m'); + expect.soft(await diveOverviewPage.getAverageDepth()).toBe('43m'); diveErrors = await diveOverviewPage.getDiveErrors(); - expect(diveErrors.length).toBe(1); - expect(diveErrors[0]).toBe('Exceeded ceiling by up to 5.5m for 34 sec'); + expect.soft(diveErrors.length).toBe(1); + expect.soft(diveErrors[0]).toBe('Exceeded ceiling by up to 5.7m for 35 sec'); // add 13th segment changeGasPage = await diveOverviewPage.addChangeGasSegment(); - expect(await changeGasPage.currentStats.getCurrentDepth()).toBe('6m'); - expect(await changeGasPage.currentStats.getNoDecoLimit()).toBe('0 sec'); - expect(await changeGasPage.currentStats.getCurrentCeiling()).toBe('6m'); - expect(await changeGasPage.currentStats.getCurrentGas()).toBe('Nitrox 50 (O2: 50%, He: 0%, N2: 50%)'); - expect(await changeGasPage.currentStats.getCurrentMaxDepthPO2()).toBe('18m (22m deco)'); - expect(await changeGasPage.currentStats.getCurrentMaxDepthEND()).toBe('30m'); - expect(await changeGasPage.currentStats.getCurrentMinDepthHypoxia()).toBe('0m'); - expect(await changeGasPage.currentStats.getCurrentPO2()).toBe('0.80'); - expect(await changeGasPage.currentStats.isCurrentPO2Warning()).toBe(false); - expect(await changeGasPage.currentStats.getCurrentEND()).toBe('6m'); - - expect(await changeGasPage.getOptimalDecoGas()).toBe('Oxygen (O2: 100%, He: 0%, N2: 0%)'); + expect.soft(await changeGasPage.currentStats.getCurrentDepth()).toBe('6m'); + expect.soft(await changeGasPage.currentStats.getNoDecoLimit()).toBe('0 sec'); + expect.soft(await changeGasPage.currentStats.getCurrentCeiling()).toBe('6m'); + expect.soft(await changeGasPage.currentStats.getCurrentGas()).toBe('Custom (O2: 44%, He: 0%, N2: 56%)'); + expect.soft(await changeGasPage.currentStats.getCurrentMaxDepthPO2()).toBe('21m (26m deco)'); + expect.soft(await changeGasPage.currentStats.getCurrentMaxDepthEND()).toBe('30m'); + expect.soft(await changeGasPage.currentStats.getCurrentMinDepthHypoxia()).toBe('0m'); + expect.soft(await changeGasPage.currentStats.getCurrentPO2()).toBe('0.70'); + expect.soft(await changeGasPage.currentStats.isCurrentPO2Warning()).toBe(false); + expect.soft(await changeGasPage.currentStats.getCurrentEND()).toBe('6m'); + + expect.soft(await changeGasPage.getOptimalDecoGas()).toBe('Oxygen (O2: 100%, He: 0%, N2: 0%)'); await changeGasPage.selectCustomGas(100, 0); - expect(await changeGasPage.getNewGasPO2()).toBe('1.60'); - expect(await changeGasPage.isNewGasPO2Warning()).toBe(true); - expect(await changeGasPage.getNewGasEND()).toBe('6m'); - expect(await changeGasPage.getNewGasNoDecoLimit()).toBe('0 sec'); - expect(await changeGasPage.getNewGasMaxDepthPO2()).toBe('4m (6m deco)'); - expect(await changeGasPage.getNewGasMaxDepthEND()).toBe('30m'); - expect(await changeGasPage.getNewGasMinDepthHypoxia()).toBe('0m'); + expect.soft(await changeGasPage.getNewGasPO2()).toBe('1.60'); + expect.soft(await changeGasPage.isNewGasPO2Warning()).toBe(true); + expect.soft(await changeGasPage.getNewGasEND()).toBe('6m'); + expect.soft(await changeGasPage.getNewGasNoDecoLimit()).toBe('0 sec'); + expect.soft(await changeGasPage.getNewGasMaxDepthPO2()).toBe('4m (6m deco)'); + expect.soft(await changeGasPage.getNewGasMaxDepthEND()).toBe('30m'); + expect.soft(await changeGasPage.getNewGasMinDepthHypoxia()).toBe('0m'); diveOverviewPage = await changeGasPage.Save(); diveSegments = await diveOverviewPage.getDiveSegments(); - expect(diveSegments[13].heading).toBe('air 1:46:24 Switch Gas'); - expect(diveSegments[13].details).toBe('Oxygen (O2: 100%, He: 0%, N2: 0%)'); - expect(diveSegments[14].heading).toBe('done 1:46:24 Surface'); - expect(diveSegments[14].details).toBe('Ascent time: 36 sec @ 10m/min'); + expect.soft(diveSegments[13].heading).toBe('air 2:51:24 Switch Gas'); + expect.soft(diveSegments[13].details).toBe('Oxygen (O2: 100%, He: 0%, N2: 0%)'); + expect.soft(diveSegments[14].heading).toBe('done 2:51:24 Surface'); + expect.soft(diveSegments[14].details).toBe('Ascent time: 36 sec @ 10m/min'); - expect(await diveOverviewPage.getDiveDuration()).toBe('107 min'); - expect(await diveOverviewPage.getMaxDepth()).toBe('100m'); - expect(await diveOverviewPage.getAverageDepth()).toBe('52m'); + expect.soft(await diveOverviewPage.getDiveDuration()).toBe('172 min'); + expect.soft(await diveOverviewPage.getMaxDepth()).toBe('100m'); + expect.soft(await diveOverviewPage.getAverageDepth()).toBe('43m'); diveErrors = await diveOverviewPage.getDiveErrors(); - expect(diveErrors.length).toBe(1); - expect(diveErrors[0]).toBe('Exceeded ceiling by up to 5.5m for 34 sec'); + expect.soft(diveErrors.length).toBe(1); + expect.soft(diveErrors[0]).toBe('Exceeded ceiling by up to 5.7m for 35 sec'); // add 14th segment maintainDepthPage = await diveOverviewPage.addMaintainDepthSegment(); - expect(await maintainDepthPage.currentStats.getCurrentDepth()).toBe('6m'); - expect(await maintainDepthPage.currentStats.getNoDecoLimit()).toBe('0 sec'); - expect(await maintainDepthPage.currentStats.getCurrentCeiling()).toBe('6m'); - expect(await maintainDepthPage.currentStats.getCurrentGas()).toBe('Oxygen (O2: 100%, He: 0%, N2: 0%)'); - expect(await maintainDepthPage.currentStats.getCurrentMaxDepthPO2()).toBe('4m (6m deco)'); - expect(await maintainDepthPage.currentStats.getCurrentMaxDepthEND()).toBe('30m'); - expect(await maintainDepthPage.currentStats.getCurrentMinDepthHypoxia()).toBe('0m'); - expect(await maintainDepthPage.currentStats.getCurrentPO2()).toBe('1.60'); - expect(await maintainDepthPage.currentStats.isCurrentPO2Warning()).toBe(true); - expect(await maintainDepthPage.currentStats.getCurrentEND()).toBe('6m'); - - await maintainDepthPage.setTimeAtDepth(33); - expect(await maintainDepthPage.getTotalDiveDuration()).toBe('139 min 24 sec'); - expect(await maintainDepthPage.getNewNDL()).toBe('> 5 hours'); - expect(await maintainDepthPage.getNewCeiling()).toBe('0m'); + expect.soft(await maintainDepthPage.currentStats.getCurrentDepth()).toBe('6m'); + expect.soft(await maintainDepthPage.currentStats.getNoDecoLimit()).toBe('0 sec'); + expect.soft(await maintainDepthPage.currentStats.getCurrentCeiling()).toBe('6m'); + expect.soft(await maintainDepthPage.currentStats.getCurrentGas()).toBe('Oxygen (O2: 100%, He: 0%, N2: 0%)'); + expect.soft(await maintainDepthPage.currentStats.getCurrentMaxDepthPO2()).toBe('4m (6m deco)'); + expect.soft(await maintainDepthPage.currentStats.getCurrentMaxDepthEND()).toBe('30m'); + expect.soft(await maintainDepthPage.currentStats.getCurrentMinDepthHypoxia()).toBe('0m'); + expect.soft(await maintainDepthPage.currentStats.getCurrentPO2()).toBe('1.60'); + expect.soft(await maintainDepthPage.currentStats.isCurrentPO2Warning()).toBe(true); + expect.soft(await maintainDepthPage.currentStats.getCurrentEND()).toBe('6m'); + + await maintainDepthPage.setTimeAtDepth(100); + expect.soft(await maintainDepthPage.getTotalDiveDuration()).toBe('271 min 24 sec'); + expect.soft(await maintainDepthPage.getNewNDL()).toBe('> 5 hours'); + expect.soft(await maintainDepthPage.getNewCeiling()).toBe('0m'); decoMilestones = await maintainDepthPage.getDecoMilestones(); - expect(decoMilestones[0]).toBe('33 min 3 sec : Deco complete @ 0m'); + expect.soft(decoMilestones[0]).toBe('100 min 11 sec : Deco complete @ 0m'); diveOverviewPage = await maintainDepthPage.Save(); diveSegments = await diveOverviewPage.getDiveSegments(); - expect(diveSegments[14].heading).toBe('arrow_forward 1:46:24 Maintain Depth at 6m'); - expect(diveSegments[14].details).toBe('Time: 33 min'); - expect(diveSegments[15].heading).toBe('done 2:19:24 Surface'); - expect(diveSegments[15].details).toBe('Ascent time: 36 sec @ 10m/min'); + expect.soft(diveSegments[14].heading).toBe('arrow_forward 2:51:24 Maintain Depth at 6m'); + expect.soft(diveSegments[14].details).toBe('Time: 100 min'); + expect.soft(diveSegments[15].heading).toBe('done 4:31:24 Surface'); + expect.soft(diveSegments[15].details).toBe('Ascent time: 36 sec @ 10m/min'); - expect(await diveOverviewPage.getDiveDuration()).toBe('140 min'); - expect(await diveOverviewPage.getMaxDepth()).toBe('100m'); - expect(await diveOverviewPage.getAverageDepth()).toBe('41m'); + expect.soft(await diveOverviewPage.getDiveDuration()).toBe('272 min'); + expect.soft(await diveOverviewPage.getMaxDepth()).toBe('100m'); + expect.soft(await diveOverviewPage.getAverageDepth()).toBe('30m'); diveErrors = await diveOverviewPage.getDiveErrors(); - expect(diveErrors).toHaveLength(0); + expect.soft(diveErrors).toHaveLength(0); }); diff --git a/src/src/app/dive-planner-service/DivePlannerService.spec.ts b/src/src/app/dive-planner-service/DivePlannerService.spec.ts index e4dc315c..d37a5b5b 100644 --- a/src/src/app/dive-planner-service/DivePlannerService.spec.ts +++ b/src/src/app/dive-planner-service/DivePlannerService.spec.ts @@ -78,7 +78,7 @@ describe('DivePlannerService', () => { expect(svc.getMaxDepth()).toBe(30); expect(svc.getPO2Error().duration).toBe(0); - expect(svc.getNoDecoLimit(25, air, 0)).toBe(518); + expect(svc.getNoDecoLimit(25, air, 0)).toBe(191); expect(svc.getOptimalDecoGas(25).oxygen).toBe(45); expect(svc.getOptimalDecoGas(25).helium).toBe(0); expect(svc.getOptimalDecoGas(25).nitrogen).toBe(55); @@ -86,7 +86,7 @@ describe('DivePlannerService', () => { expect(svc.getTravelTime(53)).toBe(69); expect(svc.getTravelTime(12)).toBe(108); - expect(svc.getNewInstantCeiling(30, 42 * 60)).toBe(4); + expect(svc.getNewInstantCeiling(30, 42 * 60)).toBe(5); }); it('deco dive breaking the limits', () => { @@ -119,8 +119,8 @@ describe('DivePlannerService', () => { svc.addMaintainDepthSegment(35 * 60); expect(svc.getCurrentDepth()).toBe(6); - expect(svc.getCurrentInstantCeiling()).toBe(1); - expect(svc.getCurrentCeiling()).toBe(0); + expect(svc.getCurrentInstantCeiling()).toBe(5); + expect(svc.getCurrentCeiling()).toBe(5); expect(svc.getCurrentGas()).toBe(oxygen); expect(svc.getCurrentGas().maxDepthPO2).toBe(4); expect(svc.getCurrentGas().maxDepthPO2Deco).toBe(6); @@ -133,7 +133,7 @@ describe('DivePlannerService', () => { expect(svc.getCurrentGas().getPHe(svc.getCurrentDepth())).toBe(0); expect(Math.round(svc.getAverageDepth())).toBe(37); expect(svc.getDiveDuration()).toBe(9060); - expect(svc.getCeilingError().duration).toBe(453); + expect(svc.getCeilingError().duration).toBe(2292); expect(svc.getENDError().duration).toBe(660); expect(svc.getHypoxicError().duration).toBe(6); expect(svc.getMaxDepth()).toBe(100); diff --git a/src/src/app/dive-planner-service/Tissue.ts b/src/src/app/dive-planner-service/Tissue.ts index 5fdd1d74..2de44852 100644 --- a/src/src/app/dive-planner-service/Tissue.ts +++ b/src/src/app/dive-planner-service/Tissue.ts @@ -115,7 +115,7 @@ export class Tissue { } private getTissueByTime(time: number): { PN2: number; PHe: number } { - return this.tissueByTime.get(time) ?? { PN2: 0, PHe: 0 }; + return this.tissueByTime.get(time) ?? { PN2: this.ENVIRONMENT_PN2, PHe: this.ENVIRONMENT_PHE }; } private getPN2Delta(tissuePN2: number, gasPN2: number): number {