Skip to main content

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('#Shell-home');
await expect(page).toHaveURL(/fiorilaunchpad/);
});

await test.step('verify UI5 runtime is available', async () => {
const isUI5 = await ui5.isUI5Available();
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,
feObjectPage,
ui5Matchers,
}) => {
await test.step('verify PO creation app is accessible', async () => {
await ui5Navigation.navigateToIntent('#PurchaseOrder-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 feObjectPage.fillField('Supplier', '100001');
await feObjectPage.fillField('NetPrice', '50000');
await feObjectPage.clickSave();
await ui5Matchers.toHaveMessageStrip('Success', /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 ({
ui5Navigation,
feObjectPage,
ui5Matchers,
}) => {
await ui5Navigation.navigateToIntent('#PurchaseOrder-create');
await feObjectPage.fillField('CompanyCode', org.companyCode);
await feObjectPage.fillField('PurchasingOrganization', org.purchOrg);
await feObjectPage.fillField('Plant', org.plant);
await feObjectPage.fillField('Supplier', '100001');
await feObjectPage.clickSave();
await ui5Matchers.toHaveMessageStrip('Success', /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,
feObjectPage,
feListReport,
ui5Matchers,
}) => {
await test.step('1. Create Purchase Requisition', async () => {
await ui5Navigation.navigateToIntent('#PurchaseRequisition-create');
// Fill and save PR
});

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

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

await test.step('4. Enter Invoice', async () => {
await ui5Navigation.navigateToIntent('#SupplierInvoice-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('#PurchaseOrder-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: 20
- run: npm ci
- run: npx playwright install chromium
- run: npx playwright test tests/smoke/ --project=regression
env:
SAP_BASE_URL: ${{ secrets.SAP_QA_URL }}
SAP_USERNAME: ${{ secrets.SAP_QA_USER }}
SAP_PASSWORD: ${{ secrets.SAP_QA_PASS }}

Phase-to-Praman Mapping Summary​

PhasePraman FeatureKey Config
Discoverui5.isUI5Available(), 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