# Record/Replay testing in Sorbet

DevFeed: [Record/Replay testing in Sorbet](<https://devfeed.tech/articles/record-replay-testing-in-sorbet-21960.md>)

Original publisher: [Read original article](<https://blog.nelhage.com/post/record-replay-in-sorbet/>)

Author: Nelson Elhage

Published: 2020-01-13T18:00:00Z

Content type: article

Language: en

Sources: [Nelson Elhage](<https://devfeed.tech/sources/nelson-elhage.md>)

Topics: [Testing](<https://devfeed.tech/topics/testing.md>), [Ruby](<https://devfeed.tech/topics/ruby.md>), [stripe](<https://devfeed.tech/topics/stripe.md>), [Development](<https://devfeed.tech/topics/development.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>)

Tags: [2017](<https://devfeed.tech/tags/2017.md>), [case-study](<https://devfeed.tech/tags/case-study.md>), [debugging](<https://devfeed.tech/tags/debugging.md>), [git](<https://devfeed.tech/tags/git.md>), [infrastructure](<https://devfeed.tech/tags/infrastructure.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [quality](<https://devfeed.tech/tags/quality.md>), [ruby](<https://devfeed.tech/tags/ruby.md>), [stripe](<https://devfeed.tech/tags/stripe.md>), [testing](<https://devfeed.tech/tags/testing.md>), [unit-test](<https://devfeed.tech/tags/unit-test.md>)

## AI overview

This article describes Sorbet's record/replay testing strategy. The framework records a typechecker's output for example Ruby programs, stores that output in Git, and replays the examples to compare later results.

## Source excerpt

In 2017 and 2018, I (along with Paul Tarjan and Dmitry Petrashko) was a founding member of the Sorbet project at Stripe to build a gradual static typechecking system for Ruby, with the aim of enhancing productivity on Stripe's millions of lines of Ruby, and eventually producing a useful open-source tool. I'm very proud of the work we did (and that others continue to do!) on Sorbet; I think we were very successful, and it was one of the best teams I've worked on in a number of ways.