Skip to content

Commit

Permalink
NA-250 updated automated tests
Browse files Browse the repository at this point in the history
  • Loading branch information
SimaoBolota-MetaCell committed May 17, 2024
1 parent de04b16 commit 25022d2
Show file tree
Hide file tree
Showing 17 changed files with 527 additions and 190 deletions.
183 changes: 133 additions & 50 deletions tests/snapshot-tests/FAFB_Fly_Brain_regression.test.js

Large diffs are not rendered by default.

179 changes: 133 additions & 46 deletions tests/snapshot-tests/Janelia_FlyEM_regression.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,14 +27,14 @@ jest.setTimeout(TIMEOUT);

describe("Test Suite for Janelia FlyEM Dataset", () => {
beforeAll(async () => {

await page.goto(baseURL);
await page.waitForTimeout(3000);
await page.waitForSelector(selectors.SIDE_PANEL);

});


describe("2D Canvas", () => {

it("should navigate to rendering tab", async () => {
Expand All @@ -57,24 +57,24 @@ describe("Test Suite for Janelia FlyEM Dataset", () => {
const { valueBeforeSlash, valueAfterSlash } = await page.$eval('div[title="Number of chunks rendered"]', (element) => {
const textContent = element.textContent.trim();
const [valueBeforeSlash, valueAfterSlash] = textContent.split('/').map(part => part.trim());

return { valueBeforeSlash, valueAfterSlash };
});
return valueBeforeSlash >= (1 / 2) * valueAfterSlash;
};

const maxRetries = 20;
let retries = 0;

while (retries < maxRetries) {
if (await isValueComplete()) {
console.log('Value is reached. Continuing with the next steps.');
break;
}
await page.waitForTimeout(3000);
await page.waitForTimeout(3000);
retries++;
}

if (retries === maxRetries) {
throw new Error('Timeout: Value did not become the expected within the specified time.');
}
Expand All @@ -87,7 +87,7 @@ describe("Test Suite for Janelia FlyEM Dataset", () => {


it("should take screenshot of main canvas", async () => {
const canvas = await page.waitForSelector(selectors.IMAGE_CANVAS, {hidden:false});
const canvas = await page.waitForSelector(selectors.IMAGE_CANVAS, { hidden: false });
await page.waitForTimeout(1000 * 6);
const groups_image = await page.screenshot();
// const groups_image = await canvas.screenshot();
Expand All @@ -106,15 +106,18 @@ describe("Test Suite for Janelia FlyEM Dataset", () => {
console.log('Enabling Volume Rendering ...')
await page.waitForSelector(selectors.RENDERING_TAB_DROPDOWNS)
const dropdown_buttons = await page.$$('select.neuroglancer-layer-control-control')
await dropdown_buttons[1].click()
await dropdown_buttons[1].click()
await page.waitForSelector(selectors.OFF_VALUE)
await page.waitForSelector(selectors.ON_VALUE)
await page.waitForSelector(selectors.MAX_VALUE)
await dropdown_buttons[1].select('on');
await page.waitForTimeout(2000);
await page.waitForFunction((selector) => {
const dropdowns = Array.from(document.querySelectorAll(selector));
return dropdowns[1] && dropdowns[1].value === 'on';
}, {}, '.neuroglancer-layer-control-container.neuroglancer-layer-options-control-container > select.neuroglancer-layer-control-control');
await page.waitForSelector(selectors.RESOLUTION_SLICES)
const rendering_options_afterVolume = await page.$$(".neuroglancer-layer-control-container.neuroglancer-layer-options-control-container");
expect(rendering_options_afterVolume.length).toBe(6);
expect(rendering_options_afterVolume.length).toBe(7);
console.log('Volume Rendering enabled')
});

Expand All @@ -126,25 +129,25 @@ describe("Test Suite for Janelia FlyEM Dataset", () => {
const { valueBeforeSlash, valueAfterSlash } = await page.$eval('.neuroglancer-tab-content.neuroglancer-image-dropdown > div > .neuroglancer-layer-control-container.neuroglancer-layer-options-control-container > .neuroglancer-render-scale-widget.neuroglancer-layer-control-control > .neuroglancer-render-scale-widget-legend > div[title="Number of chunks rendered"]', (element) => {
const textContent = element.textContent.trim();
const [valueBeforeSlash, valueAfterSlash] = textContent.split('/').map(part => part.trim());

return { valueBeforeSlash, valueAfterSlash };
});

return valueBeforeSlash >= (1 / 4) * valueAfterSlash;
};

const maxRetries = 20;
let retries = 0;

while (retries < maxRetries) {
if (await isValueComplete()) {
console.log('Value is reached. Continuing with the next steps.');
break;
}
await page.waitForTimeout(3000);
await page.waitForTimeout(3000);
retries++;
}

if (retries === maxRetries) {
throw new Error('Timeout: Value did not become the expected within the specified time.');
}
Expand All @@ -154,9 +157,9 @@ describe("Test Suite for Janelia FlyEM Dataset", () => {
}
})


it("should take screenshot of main canvas with 3D", async () => {
const canvas = await page.waitForSelector(selectors.IMAGE_CANVAS, {hidden:false});
const canvas = await page.waitForSelector(selectors.IMAGE_CANVAS, { hidden: false });
await page.waitForTimeout(1000 * 6);
const groups_image = await page.screenshot();
// const groups_image = await canvas.screenshot();
Expand All @@ -170,29 +173,67 @@ describe("Test Suite for Janelia FlyEM Dataset", () => {

})


describe("Canvas with Max Volume Rendering", () => {

it("should enable max volume rendering", async () => {
console.log('Enabling Max Volume Rendering ...')
await page.waitForSelector(selectors.RENDERING_TAB_DROPDOWNS)
const dropdown_buttons = await page.$$('select.neuroglancer-layer-control-control')
await dropdown_buttons[1].click()
await dropdown_buttons[1].click()
await page.waitForSelector(selectors.OFF_VALUE)
await page.waitForSelector(selectors.ON_VALUE)
await page.waitForSelector(selectors.MAX_VALUE)
await dropdown_buttons[1].select('max');
await page.waitForTimeout(2000);
await page.waitForFunction((selector) => {
const dropdowns = Array.from(document.querySelectorAll(selector));
return dropdowns[1] && dropdowns[1].value === 'max';
}, {}, '.neuroglancer-layer-control-container.neuroglancer-layer-options-control-container > select.neuroglancer-layer-control-control');
await page.waitForSelector(selectors.RESOLUTION_SLICES)


try {
const isValueComplete = async () => {
const { valueBeforeSlash, valueAfterSlash } = await page.$eval('.neuroglancer-tab-content.neuroglancer-image-dropdown > div > .neuroglancer-layer-control-container.neuroglancer-layer-options-control-container > .neuroglancer-render-scale-widget.neuroglancer-layer-control-control > .neuroglancer-render-scale-widget-legend > div[title="Number of chunks rendered"]', (element) => {
const textContent = element.textContent.trim();
const [valueBeforeSlash, valueAfterSlash] = textContent.split('/').map(part => part.trim());

return { valueBeforeSlash, valueAfterSlash };
});

return valueBeforeSlash >= (1 / 4) * valueAfterSlash;
};

const maxRetries = 20;
let retries = 0;

while (retries < maxRetries) {
if (await isValueComplete()) {
console.log('Value is reached. Continuing with the next steps.');
break;
}
await page.waitForTimeout(3000);
retries++;
}

if (retries === maxRetries) {
throw new Error('Timeout: Value did not become the expected within the specified time.');
}
} catch (error) {
console.error('An error occurred:', error.message);
throw error;
}

console.log('Max Volume Rendering enabled')
})

it("should take screenshot of main canvas with Max 3D Rendering", async () => {
const canvas = await page.waitForSelector(selectors.IMAGE_CANVAS, {hidden:false});
await page.waitForSelector('button[title="Switch to 3d layout."]', {hidden:false});
it("should maximize 3D panel", async () => {
await page.waitForSelector('button[title="Switch to 3d layout."]', { hidden: false });
await page.click('button[title="Switch to 3d layout."]');
await page.waitForSelector('button[title="Switch to 4panel layout."]', {hidden:false});
await page.waitForSelector('button[title="Switch to 4panel layout."]', { hidden: false });
})

it("should take screenshot of main canvas with Max 3D Rendering", async () => {
await page.waitForSelector(selectors.IMAGE_CANVAS, { hidden: false });

// await page.waitForTimeout(1000 * 6);
const groups_image = await page.screenshot();
Expand All @@ -203,37 +244,79 @@ describe("Test Suite for Janelia FlyEM Dataset", () => {
customSnapshotIdentifier: 'Max_3D_Rendering',
});
await page.waitForTimeout(1000 * 3);
await page.waitForSelector('button[title="Switch to 4panel layout."]', {hidden:false});
await page.click('button[title="Switch to 4panel layout."]');
await page.waitForSelector('button[title="Switch to 3d layout."]', {hidden:false});


});
it("should reset to 4 panel layout", async () => {
await page.waitForSelector('button[title="Switch to 4panel layout."]', { hidden: false });
await page.click('button[title="Switch to 4panel layout."]');
await page.waitForSelector('button[title="Switch to 3d layout."]', { hidden: false });
})

});

describe("Canvas with Min Volume Rendering", () => {

it("should enable min volume rendering", async () => {
console.log('Enabling Min Volume Rendering ...')
await page.waitForSelector(selectors.RENDERING_TAB_DROPDOWNS)
await page.waitForSelector(selectors.RENDERING_TAB_DROPDOWNS, { hidden: false })
const dropdown_buttons = await page.$$('select.neuroglancer-layer-control-control')
await dropdown_buttons[1].click()
await page.waitForSelector(selectors.OFF_VALUE)
await page.waitForSelector(selectors.ON_VALUE)
await page.waitForSelector(selectors.MAX_VALUE)
await page.waitForSelector(selectors.MIN_VALUE)
await dropdown_buttons[1].click()
await page.waitForSelector(selectors.OFF_VALUE, { hidden: false })
await page.waitForSelector(selectors.ON_VALUE, { hidden: false })
await page.waitForSelector(selectors.MAX_VALUE, { hidden: false })
await page.waitForSelector(selectors.MIN_VALUE, { hidden: false })
await dropdown_buttons[1].select('min');
await page.waitForFunction((selector) => {
const dropdowns = Array.from(document.querySelectorAll(selector));
return dropdowns[1] && dropdowns[1].value === 'min';
}, {}, '.neuroglancer-layer-control-container.neuroglancer-layer-options-control-container > select.neuroglancer-layer-control-control');
await page.waitForTimeout(2000);
await page.waitForSelector(selectors.RESOLUTION_SLICES)

await page.waitForSelector(selectors.RESOLUTION_SLICES, { hidden: false })

try {
const isValueComplete = async () => {
const { valueBeforeSlash, valueAfterSlash } = await page.$eval('.neuroglancer-tab-content.neuroglancer-image-dropdown > div > .neuroglancer-layer-control-container.neuroglancer-layer-options-control-container > .neuroglancer-render-scale-widget.neuroglancer-layer-control-control > .neuroglancer-render-scale-widget-legend > div[title="Number of chunks rendered"]', (element) => {
const textContent = element.textContent.trim();
const [valueBeforeSlash, valueAfterSlash] = textContent.split('/').map(part => part.trim());

return { valueBeforeSlash, valueAfterSlash };
});

return valueBeforeSlash >= (1 / 4) * valueAfterSlash;
};

const maxRetries = 20;
let retries = 0;

while (retries < maxRetries) {
if (await isValueComplete()) {
console.log('Value is reached. Continuing with the next steps.');
break;
}
await page.waitForTimeout(3000);
retries++;
}

if (retries === maxRetries) {
throw new Error('Timeout: Value did not become the expected within the specified time.');
}
} catch (error) {
console.error('An error occurred:', error.message);
throw error;
}

console.log('Min Volume Rendering enabled')
})

it("should take screenshot of main canvas with Min 3D Rendering", async () => {
const canvas = await page.waitForSelector(selectors.IMAGE_CANVAS, {hidden:false});
await page.waitForSelector('button[title="Switch to 3d layout."]', {hidden:false});
it("should maximize 3D panel", async () => {
await page.waitForSelector('button[title="Switch to 3d layout."]', { hidden: false });
await page.click('button[title="Switch to 3d layout."]');
await page.waitForSelector('button[title="Switch to 4panel layout."]', {hidden:false});
await page.waitForSelector('button[title="Switch to 4panel layout."]', { hidden: false });
})

it("should take screenshot of main canvas with Min 3D Rendering", async () => {
await page.waitForSelector(selectors.IMAGE_CANVAS, { hidden: false });

// await page.waitForTimeout(1000 * 6);
const groups_image = await page.screenshot();
Expand All @@ -244,11 +327,15 @@ describe("Test Suite for Janelia FlyEM Dataset", () => {
customSnapshotIdentifier: 'Min_3D_Rendering',
});
await page.waitForTimeout(1000 * 3);
await page.waitForSelector('button[title="Switch to 4panel layout."]', {hidden:false});
await page.click('button[title="Switch to 4panel layout."]');
await page.waitForSelector('button[title="Switch to 3d layout."]', {hidden:false});


});

it("should reset to 4 panel layout", async () => {
await page.waitForSelector('button[title="Switch to 4panel layout."]', { hidden: false });
await page.click('button[title="Switch to 4panel layout."]');
await page.waitForSelector('button[title="Switch to 3d layout."]', { hidden: false });
})
})

describe.skip("Canvas with colored 2D + 3D", () => {
Expand All @@ -258,7 +345,7 @@ describe("Test Suite for Janelia FlyEM Dataset", () => {
await page.waitForSelector(selectors.COLORMAP)
await page.waitForSelector(selectors.COLORMAP_COLOR_WIDGET)
await page.$eval('#neuroglancer-tf-color-widget', (colorWidget) => {
colorWidget.value = '#00ff00';
colorWidget.value = '#00ff00';
const event = new Event('change', { bubbles: true });
colorWidget.dispatchEvent(event);
});
Expand All @@ -268,7 +355,7 @@ describe("Test Suite for Janelia FlyEM Dataset", () => {
await page.waitForTimeout(1000 * 5);
await page.waitForSelector(selectors.RENDERING_TAB_DROPDOWNS)
const dropdown_buttons = await page.$$('select.neuroglancer-layer-control-control')
await dropdown_buttons[1].click()
await dropdown_buttons[1].click()
await page.waitForSelector(selectors.OFF_VALUE)
await page.waitForSelector(selectors.ON_VALUE)
await page.waitForSelector(selectors.MAX_VALUE)
Expand All @@ -278,7 +365,7 @@ describe("Test Suite for Janelia FlyEM Dataset", () => {
})

it("should take screenshot of main colored canvas with 3D", async () => {
const canvas = await page.waitForSelector(selectors.IMAGE_CANVAS, {hidden:false});
const canvas = await page.waitForSelector(selectors.IMAGE_CANVAS, { hidden: false });
await page.waitForTimeout(1000 * 6);
const groups_image = await page.screenshot();
// const groups_image = await canvas.screenshot();
Expand Down
Loading

0 comments on commit 25022d2

Please sign in to comment.