4.6 KiB
Opportunities Extension 1.0.1
Browser extension that adds the "Opportunities Extension" shortcut to the permitted Oracle Fusion pages, retrieves opportunities, and displays them in a filterable table.
Development Structure
src/content/: page integration, modal shell, theme and content composition.src/background/: synchronous message registration and background composition.src/features/: opportunities, products, consumption, AI summaries, preferences and debug.src/auth/: credential-specific selection, reuse and session recovery.src/services/: Fusion/SPA operations and background HTTP/JSON transport.src/platform/: narrow browser messaging, cookies, tabs and storage adapters.src/shared/messages.js: names of the existing cross-context messages.scripts/build.mjs: generates browser-specific packages.tests/: isolated synthetic regression tests and a visual fixture.docs/: architecture/contracts and incremental refactoring record.dist/chromium/: output for Google Chrome and Microsoft Edge.dist/firefox/: output for Firefox.
Build
Use Node.js:
npm run build
The build recreates dist/chromium and dist/firefox from the same source.
Do not edit files under dist directly. Both targets use Manifest V3, with a
Chromium service worker and Firefox background scripts. The build composes classic
factory modules from scripts/sources.cjs into one isolated IIFE per execution
context. It serializes src/content/styles/redwood.css at build time. There is no
runtime module loader, browser-side eval, ES-module requirement or new dependency.
Tests and Maintenance
npm test
npm run check
Tests use built-in Node.js modules and synthetic credentials, without real Fusion
requests. The characterization suite verifies manifests, source/output equality,
fiscal dates, payloads, preferences, pagination, cache/progress and both browser API
styles. Architecture tests enforce source inclusion, explicit factory dependencies,
isolated state and unchanged CSS. These complement consumption, session recovery
and AI suites. check also fails if generated packages are stale.
There is no separate lint configuration or runtime dependency installation.
See architecture and contracts and the incremental refactoring record for execution boundaries, authentication, storage, known risks and verification limits. Mock-based tests do not replace testing the installed extension in each browser.
Without npm, run node scripts/build.mjs, node scripts/test.cjs and
node scripts/build.mjs --check. Development checks were run with Node 24.19.0.
For a local UI smoke test, run node scripts/preview.mjs and open the loopback URL
printed by the command. The fixture uses synthetic opportunities, tokens, products,
AI text and consumption; unexpected requests fail closed. It does not authenticate
against Fusion or read real extension storage. /consumption-trend.html provides
a focused chart fixture. Stop the server with Ctrl+C when finished.
Release 1.0.0
- Paginated opportunity retrieval with filters for reference, customer, owner, status, stage, and text search.
- Column sorting, links to opportunities and accounts, opportunity number copying, and stage indicators.
- Opportunity type view preferences persisted in the browser.
- Background product retrieval with configurable caching, progress tracking, and expandable product details.
- Cloud consumption account-plan lookup from each opportunity, displayed in a tabbed detail modal.
- Light and dark themes based on Oracle Redwood.
- Separate outputs for Chromium/Edge and Firefox.
Release 1.0.1
- Retries the consumer token service when it returns HTTP 200 with an HTML fallback.
- Opens the SPA session page in an inactive temporary tab and closes it as soon as valid JSON is received.
- Limits the recovery flow to five attempts and records the session bootstrap details in debug mode.
Loading in Development Mode
Chrome or Microsoft Edge
- Open
chrome://extensionsoredge://extensions. - Enable Developer mode.
- Click Load unpacked.
- Select the
dist/chromiumfolder.
Firefox
- Open
about:debugging#/runtime/this-firefox. - Click Load Temporary Add-on.
- Select the
dist/firefox/manifest.jsonfile.
Supported Pages
https://eeho.fa.us2.oraclecloud.com/hcmUI/faces/FuseWelcomehttps://eeho.fa.us2.oraclecloud.com/fscmUI/faces/FuseWelcome
When it finds the #yourapps_groupNode_sales group, the extension adds the tile before the .flat-grid-cell.flat-grid-cell-addicon item. Clicking the tile opens the opportunities interface.