Files
privacy.sexy/tests/e2e/code-highlighting.cy.ts
undergroundwires 3457fe18cf Fix OS switching not working on tree view UI
This commit resolves a rendering bug in the tree view component.
Previously, updating the tree collection prior to node updates led to
rendering errors due to the presence of non-existent nodes in the new
collection.

Changes:

- Implement manual control over the rendering process in tree view. This
  includes clearing the rendering queue and currently rendered nodes
  before updates, aligning the rendering process with the updated
  collection.
- Add Cypress E2E tests to test switching between all operating systems
  and script views, ensuring no uncaught errors and preventing
  regression.
- Replace hardcoded operating system lists in the download URL list view
  with a unified `getSupportedOsList()` method from the application,
  reducing duplication and simplifying future updates.
- Rename `initial-nodes` to `nodes` in `TreeView.vue` to reflect their
  mutable nature.
- Centralize the function for getting operating system names into
  `OperatingSystemNames.ts`, improving reusability in E2E tests.
2023-12-14 09:51:42 +01:00

48 lines
1.3 KiB
TypeScript

import { expectExists } from '@tests/shared/Assertions/ExpectExists';
import { openCard } from './support/interactions/card';
describe('script selection highlighting', () => {
// Regression test for a bug where selecting multiple scripts only highlighted the last one.
it('highlights more when multiple scripts are selected', () => {
cy.visit('/');
selectLastScript();
getCurrentHighlightRange((lastScriptHighlightRange) => {
cy.log(`Highlight height for last script: ${lastScriptHighlightRange}`);
cy.visit('/');
selectAllScripts();
getCurrentHighlightRange((allScriptsHighlightRange) => {
cy.log(`Highlight height for all scripts: ${allScriptsHighlightRange}`);
expect(allScriptsHighlightRange).to.be.greaterThan(lastScriptHighlightRange);
});
});
});
});
function selectLastScript() {
openCard({
cardIndex: -1, // last card
});
cy.get('.node')
.last()
.click({ force: true });
}
function selectAllScripts() {
cy.contains('span', 'All')
.click();
}
function getCurrentHighlightRange(
callback: (highlightedRange: number) => void,
) {
cy
.get('#codeEditor')
.invoke('attr', 'data-test-highlighted-range')
.should('not.be.empty')
.and('not.equal', '0')
.then((range) => {
expectExists(range);
callback(parseInt(range, 10));
});
}