Skip to content

Commit b37bfa7

Browse files
authored
test: add webpack browser bundler test (#5919)
1 parent 4f0b628 commit b37bfa7

File tree

10 files changed

+189
-2
lines changed

10 files changed

+189
-2
lines changed
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
name: Bundler tests
2+
3+
on:
4+
push:
5+
branches: [main]
6+
pull_request:
7+
8+
permissions:
9+
contents: read
10+
11+
jobs:
12+
bundler-tests:
13+
runs-on: ubuntu-latest
14+
steps:
15+
- uses: actions/checkout@v5
16+
17+
- uses: actions/setup-node@v5
18+
with:
19+
cache: 'npm'
20+
cache-dependency-path: |
21+
package-lock.json
22+
node-version: 24
23+
- run: npm install -g npm@latest
24+
- name: Install dependencies
25+
run: npm ci
26+
- name: Build TypeScript packages
27+
run: npm run compile
28+
- name: Run bundler tests
29+
run: npm run test:bundle
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
dist/bundle.js
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
4+
<head>
5+
<meta charset="utf-8">
6+
<title>OpenTelemetry example</title>
7+
<base href="/">
8+
9+
<meta name="viewport" content="width=device-width, initial-scale=1">
10+
</head>
11+
12+
<body>
13+
Example of using the OpenTelemetry Logs SDK
14+
<script type="text/javascript" src="./bundle.js"></script>
15+
<br/>
16+
<button id="emit-event-button">Emit event</button>
17+
</body>
18+
19+
</html>
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
{
2+
"name": "@opentelemetry/webpack-bundle-test",
3+
"private": true,
4+
"version": "0.204.0",
5+
"description": "Test app for logs in webpack",
6+
"type": "module",
7+
"scripts": {
8+
"test:bundle": "webpack --config webpack.config.mjs",
9+
"start": "webpack serve --config webpack.config.mjs --open"
10+
},
11+
"repository": {
12+
"type": "git",
13+
"url": "git+ssh://[email protected]/open-telemetry/opentelemetry-js.git"
14+
},
15+
"keywords": [
16+
"opentelemetry",
17+
"web",
18+
"events"
19+
],
20+
"engines": {
21+
"node": "^18.19.0 || >=20.6.0"
22+
},
23+
"author": "OpenTelemetry Authors",
24+
"license": "Apache-2.0",
25+
"bugs": {
26+
"url": "https://github.com/open-telemetry/opentelemetry-js/issues"
27+
},
28+
"devDependencies": {
29+
"webpack": "^5.89.0",
30+
"webpack-cli": "^6.0.1",
31+
"webpack-dev-server": "^5.2.0"
32+
},
33+
"dependencies": {
34+
"@opentelemetry/api": "^1.3.0",
35+
"@opentelemetry/exporter-logs-otlp-http": "0.204.0",
36+
"@opentelemetry/sdk-logs": "0.204.0",
37+
"@opentelemetry/api-logs": "0.204.0"
38+
},
39+
"homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/bundler-tests/browser/webpack"
40+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import { setupOpenTelemetry } from './opentelemetry.js';
2+
import { logs } from '@opentelemetry/api-logs';
3+
4+
// Setup SDK and register with API, then obtain logger from API.
5+
setupOpenTelemetry();
6+
const logger = logs.getLogger('bundle-test-webpack');
7+
8+
window.addEventListener('load', () => {
9+
console.log('loaded');
10+
const emitEventButton = document.getElementById('emit-event-button');
11+
emitEventButton.addEventListener('click', () => {
12+
console.log('clicked');
13+
logger.emit({
14+
body: 'test-event-body',
15+
eventName: 'custom.event',
16+
});
17+
});
18+
});
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import { logs } from "@opentelemetry/api-logs";
2+
import { diag, DiagConsoleLogger } from "@opentelemetry/api";
3+
import { OTLPLogExporter } from "@opentelemetry/exporter-logs-otlp-http";
4+
import { LoggerProvider, SimpleLogRecordProcessor } from "@opentelemetry/sdk-logs";
5+
6+
export function setupOpenTelemetry(){
7+
// setup diagnostics
8+
diag.setLogger({
9+
logger: new DiagConsoleLogger(),
10+
options: {
11+
logLevel: "info",
12+
}
13+
});
14+
15+
// setup logs
16+
logs.setGlobalLoggerProvider(new LoggerProvider({
17+
// SimpleLogRecordProcessor is for testing only, do not use in production.
18+
processors: [new SimpleLogRecordProcessor(
19+
new OTLPLogExporter()
20+
)],
21+
}));
22+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import { fileURLToPath } from 'url';
2+
import path from 'path';
3+
4+
const __dirname = path.dirname(fileURLToPath(import.meta.url));
5+
6+
export default {
7+
entry: './src/emit-event.js',
8+
output: {
9+
filename: 'bundle.js',
10+
path: path.resolve(__dirname, 'dist'),
11+
clean: false
12+
},
13+
devServer: {
14+
static: {
15+
directory: path.resolve(__dirname, 'dist/'),
16+
},
17+
},
18+
mode: 'development'
19+
};

package-lock.json

Lines changed: 37 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
"submodule": "git submodule sync --recursive && git submodule update --init --recursive",
1313
"version:update": "lerna run version",
1414
"test": "lerna run test",
15+
"test:bundle": "lerna run test:bundle",
1516
"test:browser": "lerna run test:browser",
1617
"test:webworker": "lerna run test:webworker",
1718
"test:backcompat": "lerna run test:backcompat",
@@ -127,6 +128,7 @@
127128
"examples/opentelemetry-web",
128129
"examples/http",
129130
"examples/https",
130-
"examples/esm-http-ts"
131+
"examples/esm-http-ts",
132+
"bundler-tests/browser/*"
131133
]
132134
}

scripts/update-ts-configs.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ const ignoredLernaProjects = [
5353
'examples/http',
5454
'examples/https',
5555
'examples/esm-http-ts',
56+
'bundler-tests/browser/*'
5657
];
5758

5859
let dryRun = false;

0 commit comments

Comments
 (0)