Skip to main content
Version: 1.x

SAP Activate Alignment

Maps Praman test patterns to SAP Activate methodology phases. This guide helps project teams align their automated testing strategy with SAP's implementation framework.

SAP Activate Overview​

SAP Activate is SAP's methodology for implementing SAP S/4HANA and cloud solutions. It defines six phases, each with testing activities where Praman provides automation support.

PhaseNameTesting Focus
1DiscoverProof of concept, feasibility tests
2PrepareTest strategy, environment setup
3ExploreFit-to-standard, configuration validation
4RealizeUnit, integration, string tests
5DeployUAT, performance, regression
6RunProduction monitoring, regression packs

Phase 1: Discover​

Goal: Validate that Praman works with your SAP landscape.

Praman Activities​

// Proof of concept: verify basic connectivity and control discovery
import { test, expect } from 'playwright-praman';

test('SAP system connectivity check', async ({ ui5, ui5Navigation, page }) => {
await test.step('access Fiori Launchpad', async () => {
await ui5Navigation.navigateToIntent({ semanticObject: 'Shell', action: 'home' });
await expect(page).toHaveURL(/fiorilaunchpad/);
});

await test.step('verify UI5 runtime is available', async () => {
const isUI5 = await page.evaluate(
() => typeof sap !== 'undefined' && typeof sap.ui !== 'undefined',
);
expect(isUI5).toBe(true);
});

await test.step('discover controls on launchpad', async () => {
const tiles = await ui5.controls({
controlType: 'sap.m.GenericTile',
});
expect(tiles.length).toBeGreaterThan(0);
});
});

Deliverables​

  • Connectivity test script (above)
  • Browser compatibility matrix (see Cross-Browser Testing)
  • Tool evaluation report comparing Praman to Tosca, wdi5, UIVeri5

Phase 2: Prepare​

Goal: Establish test infrastructure and strategy.

Praman Activities​

ActivityPraman Artifact
Test strategy documentdocs/test-strategy.md
Environment setupplaywright.config.ts, praman.config.ts
Auth configurationtests/auth-setup.ts (see Authentication)
CI/CD pipeline.github/workflows/e2e-tests.yml
Test data strategyOData mock setup (see OData Mocking)

Project Structure​

tests/
auth-setup.ts # Authentication setup project
smoke/ # Phase 3: Fit-to-standard
fit-to-standard.spec.ts
integration/ # Phase 4: String tests
p2p-flow.spec.ts
o2c-flow.spec.ts
regression/ # Phase 5+: Regression pack
purchase-order.spec.ts
sales-order.spec.ts
performance/ # Phase 5: Performance baselines
page-load.spec.ts
playwright.config.ts
praman.config.ts

Phase 3: Explore (Fit-to-Standard)​

Goal: Validate SAP standard configuration against business requirements.

Fit-to-Standard Tests​

These tests verify that standard SAP processes work with your specific configuration (company codes, org units, master data).

import { test, expect } from 'playwright-praman';

test.describe('Fit-to-Standard: Procurement', () => {
test('standard PO creation workflow matches requirements', async ({ ui5, ui5Navigation, fe }) => {
await test.step('verify PO creation app is accessible', async () => {
await ui5Navigation.navigateToIntent({ semanticObject: 'PurchaseOrder', action: 'create' });
});

await test.step('verify required fields match spec', async () => {
// Check that configured mandatory fields are enforced
const supplierField = await ui5.control({
controlType: 'sap.ui.comp.smartfield.SmartField',
bindingPath: { path: '/Supplier' },
});
const isRequired = await supplierField.getProperty('mandatory');
expect(isRequired).toBe(true);
});

await test.step('verify org structure defaults', async () => {
// Company code should default from user parameters
const companyCode = await ui5.control({
controlType: 'sap.ui.comp.smartfield.SmartField',
bindingPath: { path: '/CompanyCode' },
});
const value = await companyCode.getProperty('value');
expect(value).toBe('1000'); // Expected default from user profile
});

await test.step('verify approval workflow triggers', async () => {
// Create PO above threshold to trigger approval
await ui5.fill({ id: /Supplier/ }, '100001');
await ui5.fill({ id: /NetPrice/ }, '50000');
await fe.objectPage.clickSave();
const messageStrip = await ui5.control({
controlType: 'sap.m.MessageStrip',
properties: { type: 'Success' },
});
await expect(messageStrip).toHaveUI5Text(/created/);
// Verify status indicates approval required
});
});
});

Configuration Validation Matrix​

const orgUnits = [
{ companyCode: '1000', purchOrg: '1000', plant: '1000', name: 'US Operations' },
{ companyCode: '2000', purchOrg: '2000', plant: '2000', name: 'EU Operations' },
{ companyCode: '3000', purchOrg: '3000', plant: '3000', name: 'APAC Operations' },
];

for (const org of orgUnits) {
test(`fit-to-standard: PO creation for ${org.name}`, async ({ ui5, ui5Navigation, fe }) => {
await ui5Navigation.navigateToIntent({ semanticObject: 'PurchaseOrder', action: 'create' });
await ui5.fill({ id: /CompanyCode/ }, org.companyCode);
await ui5.fill({ id: /PurchasingOrganization/ }, org.purchOrg);
await ui5.fill({ id: /Plant/ }, org.plant);
await ui5.fill({ id: /Supplier/ }, '100001');
await fe.objectPage.clickSave();
const messageStrip = await ui5.control({
controlType: 'sap.m.MessageStrip',
properties: { type: 'Success' },
});
await expect(messageStrip).toHaveUI5Text(/created/);
});
}

Phase 4: Realize (Integration and String Tests)​

Goal: Validate end-to-end business processes and integrations.

String Tests​

String tests connect multiple processes in sequence, validating the data flow between them.

test.describe('String Test: Procure-to-Pay', () => {
test('P2P: Purchase Requisition to Payment', async ({ ui5Navigation, fe }) => {
await test.step('1. Create Purchase Requisition', async () => {
await ui5Navigation.navigateToIntent({
semanticObject: 'PurchaseRequisition',
action: 'create',
});
// Fill and save PR
});

await test.step('2. Convert PR to Purchase Order', async () => {
await ui5Navigation.navigateToIntent({ semanticObject: 'PurchaseOrder', action: 'create' });
// Reference the PR
});

await test.step('3. Post Goods Receipt', async () => {
await ui5Navigation.navigateToIntent({ semanticObject: 'GoodsReceipt', action: 'create' });
// Post GR against PO
});

await test.step('4. Enter Invoice', async () => {
await ui5Navigation.navigateToIntent({ semanticObject: 'SupplierInvoice', action: 'create' });
// Enter and post invoice
});

await test.step('5. Verify Document Flow', async () => {
// Navigate back to PO and check all documents are linked
});
});
});

See Business Process Examples for complete runnable examples.

Test Execution Mapping​

SAP Activate ActivityPraman Test TypeConfig
Unit Test (UT)Component test with mocked ODataworkers: 4
Integration Test (IT)Cross-app flow with real backendworkers: 1
String Test (ST)Multi-step P2P, O2C flowsworkers: 1, retries: 1
Security TestAuth strategy validationSetup project

Phase 5: Deploy (UAT and Regression)​

Goal: User acceptance, performance baselines, regression packs.

Regression Pack Structure​

// playwright.config.ts — regression project
{
name: 'regression',
testDir: './tests/regression',
dependencies: ['setup'],
use: {
storageState: '.auth/sap-session.json',
trace: 'on-first-retry',
screenshot: 'only-on-failure',
},
retries: 2,
}

Performance Baselines​

test('page load performance baseline', async ({ ui5Navigation, page }) => {
const startTime = Date.now();

await ui5Navigation.navigateToIntent({ semanticObject: 'PurchaseOrder', action: 'manage' });

const loadTime = Date.now() - startTime;

// Attach timing to report
await test.info().attach('performance', {
body: JSON.stringify({ loadTime, threshold: 5000 }),
contentType: 'application/json',
});

expect(loadTime).toBeLessThan(5000); // 5-second threshold
});

Phase 6: Run (Production Monitoring)​

Goal: Continuous regression testing against production-like environments.

Smoke Test Suite​

Run a minimal set of critical path tests on a schedule:

# .github/workflows/smoke-tests.yml
name: SAP Smoke Tests
on:
schedule:
- cron: '0 6 * * *' # Daily at 6 AM
workflow_dispatch:

jobs:
smoke:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
- run: npm ci
- run: npx playwright install chromium
- run: npx playwright test tests/smoke/ --project=regression
env:
SAP_CLOUD_BASE_URL: ${{ secrets.SAP_QA_URL }}
SAP_CLOUD_USERNAME: ${{ secrets.SAP_QA_USER }}
SAP_CLOUD_PASSWORD: ${{ secrets.SAP_QA_PASS }}

Phase-to-Praman Mapping Summary​

PhasePraman FeatureKey Config
DiscoverUI5 runtime detection, control discoveryBasic playwright.config.ts
PrepareAuth setup, config, project structurepraman.config.ts, CI pipeline
ExploreFit-to-standard tests, org validationData-driven test loops
RealizeString tests, integration flowsworkers: 1, test.step()
DeployRegression packs, performance baselinesretries: 2, trace on retry
RunScheduled smoke tests, monitoringCron-triggered CI, alerts