---
title: "VIP"
subtitle: "Verified Installation of Posit"
author: "Ian Flores Siaca"
date: "April 7, 2026"
logo: images/logo-posit-light.svg
title-slide-attributes:
  data-background-color: "#213d4f"
format:
  revealjs:
    theme: [default, custom.scss]
    slide-number: true
    hash: true
    center: true
    transition: fade
    code-line-numbers: false
---

## The Problem

A customer finishes deploying Posit Team and asks:

> Is it actually working?

::: {.incremental}
- No structured way to validate a deployment end-to-end
- Manual spot-checks are slow, inconsistent, miss things
- Upgrades and config changes break things silently
:::

::: {.notes}
We've all been on that call. Customer asks "how do I know this is working?" and the honest answer is "log in, click around, try a deploy." That's not something you can hand over as proof. VIP gives you something you can.
:::

## What is VIP?

A test suite that runs against live Posit Team deployments.

::: {.incremental}
- Hits real APIs and real UIs, not mocks
- Tests are plain-English Gherkin files anyone can read
- Failures come with troubleshooting hints
- Cleans up after itself with `vip cleanup`
:::

::: {.notes}
Under the hood it's pytest with BDD via pytest-bdd. Playwright for browser tests, httpx for API calls. You point it at a deployment, it runs, and you get an HTML report. The report is the thing — that's what goes to the customer.
:::

## How to Run It

**CLI:**

```bash
pip install posit-vip
vip verify --connect-url https://connect.example.com --interactive-auth
```

**Shiny app:**

```bash
vip app   # opens a graphical test runner
```

::: {.notes}
Simplest path: pip install, one command. The --interactive-auth flag opens a browser for SSO/OIDC — you log in once, then tests run headlessly. vip app gives you a Shiny UI if you'd rather click than type. You can scope runs with --categories: just 'connect', just 'security', whatever you need.
:::

## Your Sign-Off Document

*Example of a generated validation report*

![](images/report-summary.png){fig-align="center" width="85%"}

::: {.notes}
This is what comes out. Products tested, pass/fail counts, results by outcome. When a test fails, you get the traceback plus a yellow box with likely causes and what to try next. That's the report you send to the customer.
:::

## Live Demo {background-color="#213d4f"}

<div style="text-align:center; color:white; margin-top:4rem;">
<div style="font-size:1.5em; font-weight:600;">Running VIP against a live deployment</div>
</div>

::: {.notes}
Now I'll show you a live report. This was generated against our staging cluster with all three products. I want you to notice what happens when something fails — the troubleshooting hints tell you exactly what to check.
:::

## What's Inside

<div style="display:grid; grid-template-columns:repeat(3,1fr); gap:16px; margin-top:1rem;">
<div style="background:#447099; color:white; border-radius:10px; padding:20px 16px; text-align:center;">
  <img src="images/logo-connect.svg" style="height:24px; margin-bottom:8px; filter:brightness(0) invert(1);">
  <div style="font-size:0.65em; line-height:1.6; opacity:0.9; margin-top:6px;">Auth & Users<br>Content Deploy<br>Runtime Versions<br>System Diagnostics</div>
</div>
<div style="background:#72994E; color:white; border-radius:10px; padding:20px 16px; text-align:center;">
  <img src="images/logo-workbench.svg" style="height:24px; margin-bottom:8px; filter:brightness(0) invert(1);">
  <div style="font-size:0.65em; line-height:1.6; opacity:0.9; margin-top:6px;">Auth & Login<br>IDE Launch<br>Session Lifecycle</div>
</div>
<div style="background:#9A4665; color:white; border-radius:10px; padding:20px 16px; text-align:center;">
  <img src="images/logo-packagemanager.svg" style="height:24px; margin-bottom:8px; filter:brightness(0) invert(1);">
  <div style="font-size:0.65em; line-height:1.6; opacity:0.9; margin-top:6px;">CRAN Repos<br>PyPI Repos</div>
</div>
</div>
<div style="background:#4A5568; color:white; border-radius:10px; padding:14px 20px; text-align:center; margin-top:16px;">
  <span style="font-size:0.75em; font-weight:700;">Cross-Cutting</span>
  <span style="font-size:0.65em; opacity:0.9; margin-left:1.5em;">Security · Prerequisites · Performance</span>
</div>

::: {.notes}
Tests auto-skip when a product isn't configured, so partial deployments work fine. Everything is written in Gherkin — customers can read the feature files and see exactly what was checked. If they want custom checks, there's an --extensions flag for that.
:::

## Shape What We Build Next

**What would make this useful in your customer conversations?**

::: {.incremental}
1. **Try it** — run `vip verify` against a Posit Team deployment
2. **Tell us what's missing** — what do customers ask that we don't test?
3. **Tell us what's confusing** — would a customer understand this report?
4. **File issues** — [github.com/posit-dev/vip/issues](https://github.com/posit-dev/vip/issues)
:::

::: {.notes}
We're not handing you a finished thing. We need to know what you see in the field. If there's a check you do by hand every time, that should be a VIP test. If the report confuses you, it'll confuse a customer.
:::

## {background-color="#213d4f"}

<div style="text-align:center; color:white; margin-top:4rem;">
<div style="font-size:1.8em; font-weight:700; margin-bottom:2rem;">Help us make this ready for customers.</div>
<div style="font-size:0.7em; opacity:0.6; line-height:2;">
<a href="https://github.com/posit-dev/vip" style="color:rgba(255,255,255,0.6);">github.com/posit-dev/vip</a><br>
<a href="https://posit-dev.github.io/vip/example-report/" style="color:rgba(255,255,255,0.6);">posit-dev.github.io/vip/example-report</a><br>
<a href="https://ghcr.io/posit-dev/vip" style="color:rgba(255,255,255,0.6);">ghcr.io/posit-dev/vip</a>
</div>
</div>

::: {.notes}
The example report is live at that URL. Repo has install docs. Slack or GitHub issues — either works.
:::
