• +43 660 1453541
  • contact@germaniumhq.com

Massive Performance Improvements in Germanium 1.8.3




Massive Performance Improvements in Germanium 1.8.3

With the 1.8.3 release, the positional filtering is lighting fast.

Positional filtering is one of the great strengths of Germanium. It’s great because you’re not only able to find elements by using a locate_element_by_* selenium function, but in case multiple elements matches, you can filter out the ones that are visually in the wrong positions of the page.

For example to type into an <input> that is below the text 'User name', someone can:

1
2
type_keys('root',
Input().below(Text('User name')))

Even if 5 inputs would match across the page, and 2 inputs are under the text 'User name', the closest one under the given text will be returned by the selector.

When using positional filtering (for example to find elements that are right_of a specific element), the finding of such elements was visibly slower then regular element finding.

Thus the release of 1.8.3 focused on one thing only, and namely performance. The filtering of the elements was completely rewritten and boasts incredible speeds, with the regression tests for Germanium itself, going from 3:50 minutes to 2:26 (!!) by only refactoring the positional filtering.

This also means that for the 1.9.0 release we can focus now on changing the inside/contains filtering as well, because we can get now a faster filtering without being forced to stick to only XPath selectors.