Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
b0a3201
ConnectID Adapter: fix storage type configuration not being respected…
zach-bowman-yahooinc Nov 10, 2025
1440dfa
Vidazoo utils: fix screen resolution detection (#14122)
patmmccann Nov 12, 2025
3d0f23a
adds nvm path to setup script (#14109)
UuqV Nov 13, 2025
5f3f951
optimeraRTD: updated scorefile fetching logic (#14101)
kcandiotti Nov 13, 2025
8dd9b86
Core: fix spurious validation warnings on mediaType / ortb2Imp (#14099)
dgirardi Nov 13, 2025
59fbe3a
Permutive modules: define gvl id (#14131)
patmmccann Nov 17, 2025
7720f89
Neuwo Rtd Module: Add url cleaning feature to Neuwo RTD module (#14089)
gregneuwo Nov 18, 2025
caa41e3
Bump min-document from 2.19.0 to 2.19.2 (#14162)
dependabot[bot] Nov 18, 2025
18fdfb9
Core: fix schema-utils import (#14168)
patmmccann Nov 19, 2025
7cc4ba9
Bump tar-fs from 3.0.9 to 3.1.1 (#14163)
dependabot[bot] Nov 19, 2025
8488d0c
Bump js-yaml (#14164)
dependabot[bot] Nov 19, 2025
1039fea
Prebid 10.17.0 release - reautomated
Jul 27, 2026
e53c388
Merge remote-tracking branch 'origin/master' into prebid-sync-10.17.0
khang-vu-ttd Jul 29, 2026
bfc134b
Various modules: consolidate page view ID logic (#14051)
acsbendi Nov 10, 2025
68d5dbf
CI: split tests into smaller chunks (#14126)
dgirardi Nov 17, 2025
7001424
CI: reduce dependency on browserstack (#14165)
dgirardi Nov 19, 2025
aaacf44
npm install: regenerate lockfile after #14165 cherry-pick (new karma …
khang-vu-ttd Jul 29, 2026
ed6d5db
Bump actions/download-artifact from 5 to 6 (#14146)
dependabot[bot] Nov 19, 2025
b33faf5
fix: guard pageViewIdPerBidder Map init in adapterManager.ts
khang-vu-ttd Jul 29, 2026
e90ac9a
fix: use fake timers in greedySetTimeout 'can be cleared' test
khang-vu-ttd Jul 29, 2026
09a56d3
chore: ungate coveralls reporting job
khang-vu-ttd Jul 29, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .devcontainer/postCreate.sh
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
echo "Post Create Starting"

export NVM_DIR="/usr/local/share/nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"

nvm install
nvm use
npm install gulp-cli -g
Expand Down
38 changes: 38 additions & 0 deletions .github/actions/load/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
name: Load working directory
description: Load working directory saved with "actions/save"
inputs:
name:
description: The name used with actions/save

runs:
using: 'composite'
steps:
- name: Set up Node.js
uses: actions/setup-node@v6
with:
node-version: '20'
- uses: actions/github-script@v8
id: platform
with:
result-encoding: string
script: |
const os = require('os');
return os.platform();
- name: 'Clear working directory'
shell: bash
run: |
rm -r "$(pwd)"/*

- name: Download artifact
uses: actions/download-artifact@v5
with:
path: '${{ runner.temp }}'
name: '${{ inputs.name }}'

- name: 'Untar working directory'
shell: bash
run: |
wdir="$(pwd)"
parent="$(dirname "$wdir")"
target="$(basename "$wdir")"
tar ${{ steps.platform.outputs.result == 'win32' && '--force-local' || '' }} -C "$parent" -xf '${{ runner.temp }}/${{ inputs.name }}.tar' "$target"
41 changes: 41 additions & 0 deletions .github/actions/save/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
name: Save working directory
description: Save working directory, preserving permissions
inputs:
prefix:
description: Prefix to use for autogenerated names
required: false
name:
description: a name to reference with actions/load
required: false
outputs:
name:
description: a name to reference with actions/load
value: ${{ fromJSON(steps.platform.outputs.result).name }}

runs:
using: 'composite'
steps:
- uses: actions/github-script@v8
id: platform
with:
script: |
const os = require('os');
const crypto = require("crypto");
const id = crypto.randomBytes(16).toString("hex");
return {
name: ${{ inputs.name && format('"{0}"', inputs.name) || format('"{0}" + id', inputs.prefix || '') }},
platform: os.platform(),
}
- name: Tar working directory
shell: bash
run: |
wdir="$(pwd)"
parent="$(dirname "$wdir")"
target="$(basename "$wdir")"
tar ${{ fromJSON(steps.platform.outputs.result).platform == 'win32' && '--force-local' || '' }} -C "$parent" -cf "${{ runner.temp }}/${{ fromJSON(steps.platform.outputs.result).name }}.tar" "$target"
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
path: '${{ runner.temp }}/${{ fromJSON(steps.platform.outputs.result).name }}.tar'
name: ${{ fromJSON(steps.platform.outputs.result).name }}
overwrite: true
10 changes: 1 addition & 9 deletions .github/actions/wait-for-browserstack/action.yml
Original file line number Diff line number Diff line change
@@ -1,18 +1,10 @@
name: Wait for browserstack sessions
description: Wait until enough browserstack sessions have become available
inputs:
BROWSERSTACK_USER_NAME:
description: "Browserstack user name"
BROWSERSTACK_ACCESS_KEY:
description: "Browserstack access key"

runs:
using: 'composite'
steps:
- env:
BROWSERSTACK_USERNAME: ${{ inputs.BROWSERSTACK_USER_NAME }}
BROWSERSTACK_ACCESS_KEY: ${{ inputs.BROWSERSTACK_ACCESS_KEY }}
shell: bash
- shell: bash
run: |
while
status=$(curl -u "${BROWSERSTACK_USERNAME}:${BROWSERSTACK_ACCESS_KEY}" \
Expand Down
116 changes: 116 additions & 0 deletions .github/workflows/browser-tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
name: Run unit tests on all browsers
on:
workflow_call:
inputs:
chunks:
description: Number of chunks to split tests into
required: false
type: number
default: 1
build-cmd:
description: Build command, run once
required: false
type: string
test-cmd:
description: Test command, run once per chunk
required: true
type: string
timeout:
description: Timeout on test run
required: false
type: number
default: 10
outputs:
coverage:
description: Artifact name for coverage results
value: ${{ jobs.browser-tests.outputs.coverage }}
secrets:
BROWSERSTACK_USER_NAME:
description: "Browserstack user name"
BROWSERSTACK_ACCESS_KEY:
description: "Browserstack access key"
jobs:
build:
uses: ./.github/workflows/build.yml
with:
build-cmd: ${{ inputs.build-cmd }}

setup:
needs: build
name: "Setup environment"
runs-on: ubuntu-latest
outputs:
browsers: ${{ toJSON(fromJSON(steps.define.outputs.result).browsers) }}
bstack-key: ${{ steps.bstack-save.outputs.name }}
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Restore working directory
uses: ./.github/actions/load
with:
name: ${{ needs.build.outputs.built-key }}
- name: "Define testing strategy"
uses: actions/github-script@v8
id: define
with:
script: |
const fs = require('node:fs/promises');
const browsers = require('./.github/workflows/browser_testing.json');
const excludeFromBstack = Object.values(browsers).map(browser => browser.bsName);
const bstackBrowsers = Object.fromEntries(
// exlude "latest" version of browsers that we can test on GH actions
Object.entries(require('./browsers.json'))
.filter(([name, def]) => !excludeFromBstack.includes(def.browser) || def.browser_version !== 'latest')
)
const updatedBrowsersJson = JSON.stringify(bstackBrowsers, null, 2);
console.log("Using browsers.json:", updatedBrowsersJson);
await fs.writeFile('./browsers.json', updatedBrowsersJson);
return {
hasBSBrowsers: Object.keys(bstackBrowsers).length > 0,
browsers: Object.entries(browsers).map(([name, def]) => Object.assign({name}, def))
}
- name: "Save working directory"
id: bstack-save
if: ${{ fromJSON(steps.define.outputs.result).hasBSBrowsers }}
uses: ./.github/actions/save
with:
prefix: browserstack-

test-build-logic:
needs: build
name: "Test build logic"
uses:
./.github/workflows/run-tests.yml
with:
built-key: ${{ needs.build.outputs.built-key }}
test-cmd: gulp test-build-logic

browser-tests:
needs: [setup, build]
name: "Browser: ${{ matrix.browser.name }}"
strategy:
fail-fast: false
matrix:
browser: ${{ fromJSON(needs.setup.outputs.browsers) }}
uses:
./.github/workflows/run-tests.yml
with:
built-key: ${{ needs.build.outputs.built-key }}
test-cmd: ${{ inputs.test-cmd }} --browsers ${{ matrix.browser.name }} ${{ matrix.browser.coverage && '--coverage' || '--no-coverage' }}
chunks: ${{ inputs.chunks }}
runs-on: ${{ matrix.browser.runsOn || 'ubuntu-latest' }}

browserstack-tests:
needs: setup
if: ${{ needs.setup.outputs.bstack-key }}
name: "Browserstack tests"
uses:
./.github/workflows/run-tests.yml
with:
built-key: ${{ needs.setup.outputs.bstack-key }}
test-cmd: ${{ inputs.test-cmd }} --browserstack --no-coverage
chunks: ${{ inputs.chunks }}
browserstack: true
secrets:
BROWSERSTACK_USER_NAME: ${{ secrets.BROWSERSTACK_USER_NAME }}
BROWSERSTACK_ACCESS_KEY: ${{ secrets.BROWSERSTACK_ACCESS_KEY }}
17 changes: 17 additions & 0 deletions .github/workflows/browser_testing.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{
"ChromeHeadless": {
"bsName": "chrome",
"coverage": true
},
"EdgeHeadless": {
"bsName": "edge",
"runsOn": "windows-latest"
},
"SafariNative": {
"bsName": "safari",
"runsOn": "macos-latest"
},
"FirefoxHeadless": {
"bsName": "firefox"
}
}
43 changes: 43 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
name: Run unit tests
on:
workflow_call:
inputs:
source-key:
description: Artifact name for source directory
type: string
required: false
default: source
build-cmd:
description: Build command
required: false
type: string
outputs:
built-key:
description: Artifact name for built directory
value: ${{ jobs.build.outputs.built-key }}

jobs:
build:
name: Build
runs-on: ubuntu-latest
timeout-minutes: 5
outputs:
built-key: ${{ inputs.build-cmd && steps.save.outputs.name || inputs.source-key }}
steps:
- name: Checkout
if: ${{ inputs.build-cmd }}
uses: actions/checkout@v5
- name: Restore source
if: ${{ inputs.build-cmd }}
uses: ./.github/actions/load
with:
name: ${{ inputs.source-key }}
- name: Build
if: ${{ inputs.build-cmd }}
run: ${{ inputs.build-cmd }}
- name: 'Save working directory'
id: save
if: ${{ inputs.build-cmd }}
uses: ./.github/actions/save
with:
prefix: 'build-'
Loading
Loading