Compare commits

..

3 Commits

Author SHA1 Message Date
peptiderepo
9cb1fd748b ci: update peptide-e2e reusable-workflow ref to peptide-repo org
Reusable workflow `uses:` refs do not follow GitHub transfer redirects.
Update owner string from peptiderepo to peptide-repo post org-migration.

Agent-Session: fix-e2e-ref-20260617
2026-06-17 11:13:48 +07:00
peptiderepo
2ec631803a ci: update peptide-e2e reusable-workflow ref to peptide-repo org
Reusable workflow `uses:` refs do not follow GitHub transfer redirects.
Update owner string from peptiderepo to peptide-repo post org-migration.

Agent-Session: fix-e2e-ref-20260617
2026-06-17 11:13:46 +07:00
peptiderepo
89b0a11454 ci: update peptide-e2e reusable-workflow ref to peptide-repo org
Reusable workflow `uses:` refs do not follow GitHub transfer redirects.
Update owner string from peptiderepo to peptide-repo post org-migration.

Agent-Session: fix-e2e-ref-20260617
2026-06-17 11:13:45 +07:00
5 changed files with 8 additions and 28 deletions

View File

@@ -22,7 +22,7 @@ jobs:
- uses: actions/github-script@v7 - uses: actions/github-script@v7
with: with:
script: | script: |
const owner = 'peptide-repo'; const owner = 'peptiderepo';
const repos = [ const repos = [
'prautoblogger','peptide-repo-core','peptide-search-ai', 'prautoblogger','peptide-repo-core','peptide-search-ai',
'peptide-news-plugin','peptide-reconstitution-calculator','peptide-starter-theme' 'peptide-news-plugin','peptide-reconstitution-calculator','peptide-starter-theme'

View File

@@ -53,8 +53,7 @@ jobs:
run: npm ci run: npm ci
- name: Install Playwright browsers - name: Install Playwright browsers
# OS deps pre-installed on the self-hosted runner host; --with-deps needs sudo which the sandbox blocks run: npx playwright install chromium --with-deps
run: npx playwright install chromium
- name: Run smoke tests - name: Run smoke tests
env: env:

View File

@@ -1,13 +1,6 @@
# Changelog # Changelog
## [1.7.2] - 2026-06-17 ## [1.7.1] - 2026-06-17
### Fixed
- **CI**: Drop `--with-deps` from `npx playwright install chromium` in `smoke.yml`.
The `peptide-vps` self-hosted runner has OS-level Playwright deps pre-installed by
root; `--with-deps` invokes `apt-get` which requires `sudo`, blocked by the runner's
`NoNewPrivileges=true` systemd hardening. Binary-only install works without
elevated privileges.## [1.7.1] - 2026-06-17
### Changed ### Changed
- **CI/CD**: Switch `deploy-staging`, `deploy-production`, and `smoke` jobs from - **CI/CD**: Switch `deploy-staging`, `deploy-production`, and `smoke` jobs from

View File

@@ -1,6 +1,6 @@
{ {
"name": "peptide-e2e", "name": "peptide-e2e",
"version": "1.7.2", "version": "1.7.1",
"description": "Playwright smoke tests for peptiderepo.com (staging + production)", "description": "Playwright smoke tests for peptiderepo.com (staging + production)",
"private": true, "private": true,
"scripts": { "scripts": {

View File

@@ -34,11 +34,7 @@
* The stored OpenRouter key must NEVER appear in page source. * The stored OpenRouter key must NEVER appear in page source.
* #prv_api_key renders with value="" on every page load regardless of * #prv_api_key renders with value="" on every page load regardless of
* whether a key is stored. This spec asserts the empty value and asserts * whether a key is stored. This spec asserts the empty value and asserts
* that no structurally valid key token (regex /sk-or-v1-[A-Za-z0-9]{20,}/) * that known API key prefixes ("sk-or-") are absent from the full body.
* appears in the full body HTML. A regex is used instead of a naive
* toContain('sk-or-') to avoid a false-positive on the password input's
* placeholder="sk-or-…" attribute (the ellipsis is a format hint, not a
* token body, and won't match the regex).
* *
* @see peptiderepo/pr-vision includes/core/class-prv-admin-page.php * @see peptiderepo/pr-vision includes/core/class-prv-admin-page.php
* @see peptiderepo/pr-vision includes/core/class-prv-settings-page.php * @see peptiderepo/pr-vision includes/core/class-prv-settings-page.php
@@ -174,18 +170,10 @@ test.describe('WP Admin - PR Vision Settings page (API-key-manager)', () => {
const inputValue = await keyInput.getAttribute('value'); const inputValue = await keyInput.getAttribute('value');
expect(inputValue ?? '').toBe(''); expect(inputValue ?? '').toBe('');
// Security check: a *real* OpenRouter key (format "sk-or-v1-<20+ alnum chars>") // Security check: known OpenRouter key prefixes must not appear anywhere in
// must not appear anywhere in the page HTML -- guards against accidental // the page HTML -- guards against accidental server-side leakage.
// server-side leakage.
//
// NOTE: We use a regex rather than the naive toContain('sk-or-') to avoid
// a false-positive: the password input carries placeholder="sk-or-…"
// (an ellipsis format-hint, not a token body) which contains the literal
// string "sk-or-" but is NOT a leaked key. A regex that requires the
// "v1-" segment and at least 20 alphanumeric characters only matches a
// structurally valid key, so the placeholder never trips it.
const html = await page.content(); const html = await page.content();
expect(html).not.toMatch(/sk-or-v1-[A-Za-z0-9]{20,}/); expect(html).not.toContain('sk-or-');
}); });
}); });