 Okay, hi everyone, my name is Julius Hattel. I will give you an overview of how we do front end testing at NextCloud and some special things we introduce lately to improve the front end testing. Yeah, for the server component, we have like basic acceptance tests where we test functional aspects of the front end. Like we go through the login process and see if it all works fine. But one thing really missing was that we couldn't catch UI regressions with that approach. So we had like CSS changes that somehow influenced other pages and we were often like fixing bugs twice or three times. So that is what I had a look at and we tried to have some automated testing for that. So we wanted to like take a visual comparison pixel by pixel and have a look if some elements were out of place. And we wanted to run this on every change or every pull request. So we can easily see if some things broke up. Yeah, we want to compare to the previous state like the master branch or the stable branches. And we wanted to use a real browser. So we have like the CSS rendering as usual as possible. Yeah, we ended up using Puppeteer for this which is a remote API for Chrome. So we run a real Chrome browser. We use Chai and Mocha for the testing stuff. And it's, yeah, overall it's a 300 lines of code wrapper script that runs Puppeteer and you can basically just write test cases that go through the page then. And the results like all the screenshots and the diff comparisons of the screenshots end up in a static page that is uploaded then. So you can easily browse it. Yeah, we test pretty much like all over the next user interface. We have the installation process which is tested and compared, we have the files app like the sidebar, different sections are compared. We go for the public pages and have a look at like public share pages, files and found pages. And also the settings. And right now we are at like a bit more about 150 test points screenshots that are compared. Yeah, this is what you get as a result, the static page. You can see on the left, this is the master branch and on the right, there's a change that is produced by the by pull request. And you can, in between, you can see the difference where the pull request changes the layout. Yeah, and just a quick example, this is how you write a simple test case for the login. You basically can just interact with any element on the page. And just if all this has gone through, you type in the username password, click the login button. And after that it will just take screenshots and compare them. Yeah, one thing missing is that we still need to notify developers if there's something breaking because we can't let CI fail as some UI changes might be wanted. So we look into how we can just notify them with a GitHub comment that is automatically updated then. Yeah, we're using Danger.js for that, which is quite nice because it will keep track in the issue comment. So if a developer pushes something, then the GitHub comment will also get updated. And yeah, that is a work in progress, but it should come in the next weeks or so. And yeah, further improvements, we should aim to make partial screenshots only. So right now we always take the whole page and make a screenshot of that. But we also should like focus on only making screenshots of the sidebar and we need to cover more pages in the next cloud like the app store page, like should test the shipped apps like the notifications app and stuff like that. And yeah, we also want to look into automating accessibility testing, which also works quite nice with Puppeteer and we can drag JavaScript errors for that. Yeah, thanks, Thomas.