PHPackages                             university-of-denver/quicksilver-qa-prep - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Testing &amp; Quality](/categories/testing)
4. /
5. university-of-denver/quicksilver-qa-prep

ActiveQuicksilver-script[Testing &amp; Quality](/categories/testing)

university-of-denver/quicksilver-qa-prep
========================================

Prepare a Pantheon environment for automated QA tests by enabling the testing module and granting login roles

1.0.0(1mo ago)0217—3.3%[1 issues](https://github.com/DU-University-Relations/quicksilver-qa-prep/issues)MITPHP

Since Apr 29Pushed 1mo agoCompare

[ Source](https://github.com/DU-University-Relations/quicksilver-qa-prep)[ Packagist](https://packagist.org/packages/university-of-denver/quicksilver-qa-prep)[ Docs](https://github.com/DU-University-Relations/quicksilver-qa-prep)[ RSS](/packages/university-of-denver-quicksilver-qa-prep/feed)WikiDiscussions main Synced 1w ago

READMEChangelog (1)Dependencies (1)Versions (4)Used By (0)

Quicksilver QA Prep
===================

[](#quicksilver-qa-prep)

This Quicksilver script automates the preparation of a Pantheon environment for running automated QA tests. It replaces two manual steps that were previously run after every database clone:

1. **Enable the `du_functional_testing` module** – equivalent to: ```
    terminus drush "$SITE.$ENV" -- en du_functional_testing -y
    ```
2. **Grant the `legacy_test_and_training_accounts` role to every `qa_*` test user** – the `du_functional_testing` module creates one test user per non-built-in Drupal role (e.g. `qa_administrator`, `qa_editor`, …). The `legacy_test_and_training_accounts` role allows those accounts to bypass SSO/SAML during automated testing.

The script is triggered automatically by the Pantheon `env:clone` workflow (database clone), so no manual intervention is required after a sync.

> **Environment restriction:** The script only executes on the **dev** and **test** Pantheon environments. If it runs on any other environment (e.g. **live**), it exits immediately without making changes.

> **Note:** The `du_functional_testing` install hook is known to sometimes return a non-zero exit code. The script logs any such error and continues regardless, because the `qa_*` test users are still created even when the hook exits with an error.

This project was developed from a template for new Quicksilver projects to utilize so that Quicksilver scripts can be installed through Composer.

Original template:

Requirements
------------

[](#requirements)

- PHP 8.0 or higher
- Composer
- Drupal 9+ site running on Pantheon with the `du_functional_testing` module available in the codebase
- The `legacy_test_and_training_accounts` role must exist on the site

Installation
------------

[](#installation)

This project is designed to be included from a site's `composer.json` file, and placed in its appropriate installation directory by [Composer Installers](https://github.com/composer/installers).

In order for this to work, you should have the following in your `composer.json`file:

```
{
  "require": {
    "composer/installers": "^1"
  },
  "extra": {
    "installer-paths": {
      "web/private/scripts/quicksilver/{$name}/": ["type:quicksilver-script"]
    }
  }
}
```

Then, install this package via Composer:

```
composer require university-of-denver/quicksilver-qa-prep:^1
```

### Add to `pantheon.yml`

[](#add-to-pantheonyml)

Add the following to your `pantheon.yml` file to run the Quicksilver script whenever a database clone occurs (e.g. syncing Live → Test or Test → Dev):

```
api_version: 1

workflows:
  clone_database:
    after:
      - type: webphp
        description: Prepare environment for QA tests
        script: private/scripts/quicksilver/quicksilver-qa-prep/qa-prep.php
```

### What the script does

[](#what-the-script-does)

1. Runs `drush en du_functional_testing -y` to enable the functional testing module, which creates `qa_*` test user accounts (one per non-built-in role). Any errors from the install hook are logged but do **not** stop execution.
2. Runs `drush role:list --format=json` to retrieve all role machine names (excluding the built-in `anonymous` and `authenticated` roles).
3. For each role, derives the corresponding `qa_` username (e.g. `administrator` → `qa_administrator`) and runs `drush user:role:add legacy_test_and_training_accounts `.

If a `qa_*` user does not exist on the cloned environment the script emits a warning and continues rather than failing the workflow.

No Pantheon secrets are required.

###  Health Score

40

—

FairBetter than 86% of packages

Maintenance92

Actively maintained with recent releases

Popularity16

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity35

Early-stage or recently created project

 Bus Factor1

Top contributor holds 50% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

41d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/642d9f07988f3fcb767c14d632a9de84d745f44d9078d557cb4011220579aa88?d=identicon)[DU-Automation](/maintainers/DU-Automation)

---

Top Contributors

[![alexfinnarn](https://avatars.githubusercontent.com/u/3640707?v=4)](https://github.com/alexfinnarn "alexfinnarn (8 commits)")[![Copilot](https://avatars.githubusercontent.com/in/1143301?v=4)](https://github.com/Copilot "Copilot (8 commits)")

### Embed Badge

![Health badge](/badges/university-of-denver-quicksilver-qa-prep/health.svg)

```
[![Health](https://phpackages.com/badges/university-of-denver-quicksilver-qa-prep/health.svg)](https://phpackages.com/packages/university-of-denver-quicksilver-qa-prep)
```

###  Alternatives

[helsingborg-stad/municipio

A bootstrap theme for creating municipality sites.

4028.3k10](/packages/helsingborg-stad-municipio)[pressbooks/pressbooks

Pressbooks is an open source book publishing tool built on a WordPress multisite platform. Pressbooks outputs books in multiple formats, including PDF, EPUB, web, and a variety of XML flavours, using a theming/templating system, driven by CSS.

45344.0k1](/packages/pressbooks-pressbooks)[civicrm/civicrm-drupal-8

Open source constituent relationship management for non-profits, NGOs and advocacy organizations.

19246.3k2](/packages/civicrm-civicrm-drupal-8)[pressbooks/pressbooks-book

This theme is named after Canadian media theorist Marshall McLuhan, who coined the phrase “the medium is the message.” It is designed for academic writing and is also suitable for fiction. Headings are set in Cormorant Garamond, and body type is set in Lora.

206.7k](/packages/pressbooks-pressbooks-book)[liip/drupalconnectormodule

The DrupalConnector Module is an abstraction layer to the Drupal 7 API of global functions in order to use them in an OOD setup.

121.7k3](/packages/liip-drupalconnectormodule)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
