Testing is an important part of software development. Although testing is still sometimes regarded as an afterthought, especially in time-critical projects, methodologies like Test-driven development (TDD) and improved tooling for testing have done a lot in recent years to rectify this.
There are great testing frameworks out there for writing unit tests, component tests, and end-to-end tests in web projects. For UI testing end-to-end testing frameworks like Cypress or Selenium are often used. As with all things, there are good and bad things about end-to-end tests:
Progressive Web Apps (PWA) are a hot topic on the web right now. No wonder, they promise a user experience that should not be inferior to native apps for Android and iOS. At the same time, it should no longer be necessary to develop a separate app for each platform (especially Android and iOS), which of course involves more costs and effort.
Google defines three main features of PWAs: they must be reliable (i.e. they must work even on a bad network), fast and appealing (from the UX perspective). …
However, the more your app grows, the longer your compilation times may become. This makes writing code more cumbersome and reduces your developer productivity. You shouldn’t have to wait two minutes for compilation to be finished just to see whether this one line of changed code did the trick.
Sure, if your app is the size of a to-do app, you might be satisfied with the compilation times. …
CI/CD allows developers and organizations to move faster. By automating tasks like building, testing, and deploying software, we spend less time on mundane tasks and have more time to work on our actual applications instead. Solutions offered by the likes of GitLab, CircleCI, and GitHub allow us to easily create CI/CD jobs.
In general, a CI/CD job should run in a separate, isolated Docker container. This way, you can have a reproducible build environment. For example, you can use a Node.js image that is hosted on Docker Hub. Your job then runs in a container that is based on the…
On many websites, you’ll find yourself scrolling through lists. Some are more simplistic, while others are fancier (e.g. e-commerce websites). Modern websites feature a lot of content, yet nobody likes slow-to-respond experiences. Users will likely bounce off if performance is poor. Hence, we strive to make the user experience as pleasant as possible.
Rendering large lists of content can be a challenge for multiple reasons:
Nowadays, software gets shipped more often than in the past. Both small and big companies have realized that continuous deployment brings many benefits, like faster feedback loops. Thanks to platforms like Netlify, web apps can be shipped and served by a global CDN without much configuration.
One thing that can get in the way of continuous deployment is long deployment times. There can be many reasons why deployments can take a long time:
We have a new microservice that has a special endpoint tailored for reporting use cases. Since we don’t want to load hundreds of thousands of items at once, we implemented pagination for this endpoint. Still, even when returning 10,000 items, the JSON response was around 9MB. This is a lot of data — especially on slower connections.
In recent years there have been various software-based products where you could easily follow their progress. This hasn’t always been the case. Many products were and are still being created behind closed curtains, only released to the public once they are somewhat ready. Surely, this is not always a bad idea: some projects and environments are highly sensitive (e.g. in intelligence agencies).
Nowadays, there’s been a noticeable shift when it comes to building products, especially among tech companies. Companies want to deliver as fast as possible. Thanks to CI/CD, code can be easily shipped multiple times a day. …
Writing tests can feel slow and mundane. Testing frameworks like Jest are often making our lives as developers easier through a great developer experience. I’ve been using Jest in both frontend applications (e.g. with Angular) and in Node.js based services (e.g. Express.js) for quite a while.
Recently, one Angular project was updated and required developers to use Node 14 from now on (previously, the project required Node 10). The update went through smoothly and we didn’t encounter any issues in this process. However, I increasingly noticed an issue that I found rather strange. If an uncaught exception occurred in a…
Testing is an important part of modern software development. In the last few years, tooling has improved a lot to help developers write good tests. After all, writing tests should not feel tedious. Instead, tests ensure that existing functionality works as intended.
Senior Software Engineer @LeanIX. Co-founder of Sedeo. Passion for software engineering and startups. Looking forward to build great things. 有難うございます。🚀