Archive
2023
DEVELOPMENT
Web
Testing
Development
Migrating from Puppeteer to Playwright
How we migrated from Puppeteer to Playwright in our test suite.
2022
DEVELOPMENT
Testing
Productivity
Insights
Development
How We Make Our CI Fast
Principles we apply to improve our CI efficiency.
DEVELOPMENT
Web
Elixir
Testing
Insights
Development
How We Use Property Testing
Some real-life examples of how we use property testing in PSPDFKit Server testing.
2021
DEVELOPMENT
Testing
Productivity
Insights
Development
A Case for Fast CI
How slow build times lower your team’s productivity, and how to change this.
DEVELOPMENT
Productivity
Testing
Insights
Development
Managing CI Pipelines with Terraform
Learn about Terraform and how we use it to manage our Buildkite pipelines.
DEVELOPMENT
iOS
Swift
Testing
Tips
Development
Swift Render Tests in Practice — Part III
How to automate regenerating and updating reference images for render tests.
DEVELOPMENT
iOS
Swift
Testing
Tips
Development
Swift Render Tests in Practice - Part II
How to improve test failures with attachments and grouping related test output.
DEVELOPMENT
iOS
Swift
Testing
Tips
Development
Swift Render Tests in Practice - Part I
How to pragmatically approach render testing for custom drawing code.
DEVELOPMENT
iOS
Testing
Xcode
Development
Automating Test Retries
We walk through our experience of dealing with flaky tests by automatically retrying them.
DEVELOPMENT
Server
JavaScript
Testing
Development
Load Testing PSPDFKit Server
How we figured out what it takes to run PSPDFKit Server.
DEVELOPMENT
Android
Web
Testing
UI/UX
Insights
Development
Why Should You Care about Manual Testing?
How to approach manual testing pragmatically for quality products you can be proud of.
DEVELOPMENT
iOS
Swift
Objective-C
Xcode
Testing
Development
Deflaking CI Tests with xcresults
We’re sharing some techniques for tracking down and fixing flaky Xcode tests on CI.
DEVELOPMENT
iOS
Testing
Development
Continuous Integration: From Jenkins to Buildkite
Learn why we moved from Jenkins to Buildkite, what the current most promising services are, and how we evaluated them.
DEVELOPMENT
iOS
Testing
Development
Automating macOS Provisioning with Chef
Learn how to use Chef to automatically provision macOS machines for CI: infrastructure as code
2020
DEVELOPMENT
iOS
Testing
Development
Managing macOS Hardware: Virtualization or Bare Metal?
We explore the different ways to run macOS in the cloud, comparing virtualization via VMware, Anka, and Orka with running a fleet of bare metal machines on Amazon or MacStadium.
DEVELOPMENT
iOS
Testing
Development
Continuous Integration for Small iOS/macOS Teams
In this new series, we're sharing our approach to macOS continuous integration for smaller teams that can't dedicate an entire team to CI management or aren't willing to invest five-figure sums per year for their setup.
DEVELOPMENT
Python
Testing
Development
Executable API Documentation with the LLVM Integration Tester and FileCheck
This post covers what executable documentation is and how you can use the LLVM Integration Tester to create it.
DEVELOPMENT
Android
Kotlin
Tips
Productivity
Testing
Development
How to Reduce Flakiness in Automated UI Testing on Android
This blog post discusses tips and best practices on how to reduce flakiness in automated UI testing on Android.
DEVELOPMENT
C++
Tips
Testing
Development
Our Approach to Testing a Large-Scale C++ Codebase
This blog post outlines the frameworks and techniques PSPDFKit uses to test its large-scale C++ codebase.
DEVELOPMENT
Android
Java
Testing
Gradle
Development
Filtering Tests in Android
A look at the android.support.test.filters library and what it provides you with.
2018
DEVELOPMENT
Android
Testing
Development
Rendering Tests Using Robolectric
Rendering tests using Robolectric with a custom bitmap shadow.
DEVELOPMENT
Ruby
Testing
Development
Adding Spellchecking to Your Tests
How we added simple spelling and grammar checks to our website build process to catch some common mistakes.
2017
DEVELOPMENT
Web
Elixir
Testing
Development
How We Test and Generate Interactive CSS Documentation
Automating CSS testing and documentation with Hound and Webdriver
2016
DEVELOPMENT
iOS
Android
Testing
Development
Running Tests with Clang's AddressSanitizer
Clang has powerful sanitizers that are incredibly useful, so we collected our experiences using them between iOS, Android, and our C++ core to help you through some gotchas.
DEVELOPMENT
iOS
Testing
Development
Converting Xcode Test Runs to JUnit, the Fast Way
DEVELOPMENT
Instant
Testing
Development
End–to–End Testing: What, Why, and How?
DEVELOPMENT
Web
Instant
Elixir
Testing
Development
Testing HTTP APIs in Elixir
DEVELOPMENT
Testing
Tips
Development
Selective Pull Request Testing
DEVELOPMENT
iOS
Testing
Development
Continuous iOS Code Coverage With Jenkins and Slather
DEVELOPMENT
iOS
Performance
Testing
UI/UX
Development
Running UI Tests on iOS With Ludicrous Speed