Test Kitchen

Test Kitchen with Cinc

Test Kitchen is the standard cookbook-testing framework in the Chef ecosystem. There are two well-supported ways to run it against Cinc Client instead of Chef Infra Client:

  • kitchen-cinc — a dedicated set of Cinc provisioners. We recommend new and migrated test suites use the cinc_* provisioner names. The chef_* names are also supported as a transition aid so existing suites keep working until you can switch them over.
  • kitchen-dokken (2.23.0+) — native product_name: cinc support for the Docker-based driver. Use this when you’re already on dokken for fast container-based testing.

Both ship as part of Cinc Workstation, so if you’re already using Workstation you have them available.

Option 1: kitchen-cinc

kitchen-cinc provides five Cinc-specific provisioners that drive cinc-client (rather than chef-client) inside the test instance:

ProvisionerPurpose
cinc_infraThe standard, recommended choice — equivalent to chef_infra
cinc_zeroLocal mode against an in-process server — equivalent to chef_zero
cinc_soloSolo mode — equivalent to chef_solo
cinc_applyOne-off recipe application — equivalent to chef_apply
cinc_targetTarget mode (remote execution) — equivalent to chef_target

For backwards compatibility, the plugin also accepts the upstream chef_* names — an existing kitchen.yml using provisioner: name: chef_infra will resolve to the Cinc variant once kitchen-cinc is installed, so a migration can be a zero-config first step.

We recommend updating your kitchen.yml to use the cinc_* names once you’ve confirmed the suite passes. The intent is clearer — your test suite is exercising Cinc Client, not Chef Infra Client — and the chef_* alias is best treated as a transition aid rather than a long-term configuration.

Installation

The gem is included in Cinc Workstation. Standalone:

gem install kitchen-cinc

Or in a Gemfile:

gem "kitchen-cinc"

Example kitchen.yml

Provisioning a Vagrant VM with Cinc Client off omnitruck:

driver:
  name: vagrant

provisioner:
  name: cinc_infra

platforms:
  - name: ubuntu-24.04
  - name: almalinux-9

suites:
  - name: default
    run_list:
      - recipe[my_cookbook::default]

kitchen-cinc defaults to installing Cinc Client from omnitruck.cinc.sh automatically, so no URL or product configuration is required.

Option 2: kitchen-dokken

kitchen-dokken runs Cinc/Chef Client inside a container against another container, which is dramatically faster than spinning up a VM. As of kitchen-dokken 2.23.0 (released May 2026), Cinc is a first-class option.

Setting product_name: cinc automatically configures:

  • Image: cincproject/cinc instead of chef/chef
  • Binary path: /opt/cinc/bin/cinc-client
  • Volume container naming: cinc- prefix (avoids collisions with Chef-based suites running in parallel)
  • License acceptance: skipped (Cinc isn’t a licensed product)

Example kitchen.yml

driver:
  name: dokken
  chef_version: 19

provisioner:
  name: dokken
  product_name: cinc

transport:
  name: dokken

platforms:
  - name: almalinux-9
    driver:
      image: dokken/almalinux-9
  - name: ubuntu-24.04
    driver:
      image: dokken/ubuntu-24.04

suites:
  - name: default
    run_list:
      - recipe[my_cookbook::default]

chef_version accepts any tag published on the cincproject/cinc image — a major version (19, 18), a minor version (19.0, 18.7), a full semver (19.0.0), or latest. The Chef-style channel names stable and current are not supported by the Cinc image, since we only ship from a single stable channel.

You can also pin to a specific Cinc Client tag by overriding the image:

driver:
  name: dokken
  chef_image: cincproject/cinc
  chef_version: 19.0.0

Which one should I use?

  • Already on dokken? Use Option 2 — minimal config change, fastest test iteration.
  • Migrating an existing chef_* suite? Install kitchen-cinc — the chef_* names alias to the Cinc variants so the suite starts running against Cinc immediately. Then rename to cinc_* once the suite is green; that’s the recommended end state.
  • Building new test suites from scratch? Use kitchen-cinc with the cinc_* provisioner names. Pair with whichever driver (Vagrant, dokken, ec2, hyperv, …) fits your environment.

Where to file issues