|Slack||#test-kitchen channel on Chef Community Slack|
Test Kitchen is an integration tool for developing and testing infrastructure code and software on isolated target platforms.
Getting Started Guide
To learn how to install and setup Test Kitchen for developing infrastructure code, check out the Getting Started Guide.
If you want to get going super fast, then try the Quick Start next...
Test Kitchen is a RubyGem and can be installed with:
$ gem install test-kitchen
If you use Bundler, you can add
gem "test-kitchen" to your Gemfile and make
sure to run
Next add support to your library, Chef cookbook, or empty project with
$ kitchen init
.kitchen.yml will be created in your project base directory. This file
describes your testing configuration; what you want to test and on which target
platforms. Each of these suite and platform combinations are called instances.
By default your instances will be converged with Chef Solo and run in Vagrant
Get a listing of your instances with:
$ kitchen list
Run Chef on an instance, in this case
$ kitchen converge default-ubuntu-1204
Destroy all instances with:
$ kitchen destroy
You can clone a Chef cookbook project that contains Test Kitchen support and run through all the instances in serial by running:
$ kitchen test
There is help included with the
kitchen help subcommand which will list all
subcommands and their usage:
$ kitchen help test
More verbose logging for test-kitchen can be specified when running test-kitchen from the command line using:
$ kitchen test -l debug
For the provisioner (e.g. chef-solo or chef-zero) add a
log_level item to the provisioner section of the
For more information on setting
log_level see the configuration documentation.
Documentation is being added on the Test Kitchen website. Please read and contribute to improve them!
Test Kitchen aims to adhere to Semantic Versioning 2.0.0.
Community and Ecosystem
If you would like to see a few of the plugins or ecosystem helpers, please look at ECOSYSTEM.md.
Pull requests are very welcome! Make sure your patches are well tested. Ideally create a topic branch for every separate change you make. For example:
- Fork the repo
- Create your feature branch (
git checkout -b my-new-feature)
- Commit your changes (
git commit -am 'Added some feature')
- Push to the branch (
git push origin my-new-feature)
- Create new Pull Request
Apache License, Version 2.0 (see LICENSE)