Bird
Raised Fist0
Postmantesting~15 mins

Workflow sequencing in Postman - Build an Automation Script

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Verify API workflow sequencing for user registration and login
Preconditions (3)
Step 1: Send POST request to /register endpoint with valid user data
Step 2: Verify response status code is 201 Created
Step 3: Extract user ID from registration response
Step 4: Send POST request to /login endpoint with registered user credentials
Step 5: Verify response status code is 200 OK
Step 6: Verify response contains authentication token
✅ Expected Result: User registration succeeds with status 201, login succeeds with status 200, and authentication token is returned
Automation Requirements - Postman with JavaScript tests
Assertions Needed:
Status code is 201 for registration
Status code is 200 for login
Authentication token exists in login response
Best Practices:
Use environment variables to store and reuse user ID and token
Use pm.expect assertions for validation
Chain requests using Postman collection runner or scripts
Handle asynchronous requests properly
Automated Solution
Postman
/* Registration Request Test Script */
pm.test("Registration status code is 201", function () {
    pm.response.to.have.status(201);
});

// Save user ID from registration response
const jsonData = pm.response.json();
pm.environment.set("userId", jsonData.id);

/* Login Request Pre-request Script */
// Use stored user credentials
pm.variables.set("email", "testuser@example.com");
pm.variables.set("password", "TestPass123");

/* Login Request Test Script */
pm.test("Login status code is 200", function () {
    pm.response.to.have.status(200);
});

pm.test("Authentication token is present", function () {
    const jsonData = pm.response.json();
    pm.expect(jsonData).to.have.property('token');
    pm.environment.set("authToken", jsonData.token);
});

The first part tests the registration response status code is 201, which means the user was created successfully. It extracts the user ID from the JSON response and saves it in an environment variable for reuse.

The login request uses stored user credentials. The test script verifies the login response status code is 200, indicating success, and checks that the response contains an authentication token. The token is saved for future requests.

This approach ensures the workflow sequence is automated: register first, then login using the registered user data. Using environment variables allows data sharing between requests. Assertions with pm.expect validate the expected outcomes.

Common Mistakes - 3 Pitfalls
Not waiting for registration response before sending login request
Hardcoding user data in multiple requests
Not checking response status codes before extracting data
Bonus Challenge

Now add data-driven testing with 3 different user registrations and logins

Show Hint

Practice

(1/5)
1. What is the main purpose of workflow sequencing in Postman?
easy
A. To encrypt API requests for security
B. To create visual charts of API responses
C. To automatically generate API documentation
D. To run multiple requests in a specific order and share data between them

Solution

  1. Step 1: Understand workflow sequencing

    Workflow sequencing means running requests one after another in a set order.
  2. Step 2: Identify the purpose in Postman

    It allows passing data from one request to the next, making multi-step testing reliable.
  3. Final Answer:

    To run multiple requests in a specific order and share data between them -> Option D
  4. Quick Check:

    Workflow sequencing = ordered requests with data sharing [OK]
Hint: Think: run requests step-by-step sharing info [OK]
Common Mistakes:
  • Confusing workflow sequencing with documentation generation
  • Thinking it creates charts or encrypts requests
  • Believing requests run randomly without order
2. Which Postman script command is used to call another request inside a test script for workflow sequencing?
easy
A. pm.callRequest()
B. pm.sendRequest()
C. pm.executeRequest()
D. pm.runRequest()

Solution

  1. Step 1: Recall Postman scripting commands

    Postman provides a method to send HTTP requests programmatically inside scripts.
  2. Step 2: Identify the correct method for calling requests

    The correct method is pm.sendRequest(), which sends a request and handles its response.
  3. Final Answer:

    pm.sendRequest() -> Option B
  4. Quick Check:

    Call requests inside scripts = pm.sendRequest() [OK]
Hint: Remember: sendRequest sends HTTP calls inside scripts [OK]
Common Mistakes:
  • Using non-existent methods like pm.callRequest()
  • Confusing with pm.executeRequest() or pm.runRequest() which don't exist
  • Misspelling the method name
3. Consider this Postman test script snippet inside Request A:
pm.sendRequest('https://api.example.com/token', (err, res) => {
  pm.environment.set('token', res.json().access_token);
});

What will be the value of token in environment after this runs?
medium
A. The access_token value from the JSON response of the called request
B. Undefined, because pm.sendRequest does not set environment variables
C. An error, because pm.sendRequest cannot be used inside test scripts
D. The entire JSON response as a string

Solution

  1. Step 1: Understand pm.sendRequest callback

    The callback receives the response object res, which can be parsed as JSON.
  2. Step 2: Extract and set environment variable

    The script sets token to res.json().access_token, which is the access token string from the response.
  3. Final Answer:

    The access_token value from the JSON response of the called request -> Option A
  4. Quick Check:

    pm.sendRequest sets env var = access_token value [OK]
Hint: pm.sendRequest callback can set env vars from response JSON [OK]
Common Mistakes:
  • Assuming pm.sendRequest cannot set variables
  • Thinking the whole JSON is stored instead of just access_token
  • Confusing asynchronous callback behavior
4. You wrote this Postman test script to run Request B after Request A:
pm.sendRequest('https://api.example.com/data', (err, res) => {
  pm.environment.set('dataId', res.json().id);
});
pm.sendRequest('https://api.example.com/details/{{dataId}}', (err, res) => {
  console.log(res.json());
});

Why might the second request fail or use an empty dataId?
medium
A. Because pm.sendRequest cannot be called twice in the same script
B. Because environment variables cannot be used inside pm.sendRequest URLs
C. Because pm.sendRequest is asynchronous, the second request runs before dataId is set
D. Because console.log is not allowed inside pm.sendRequest callbacks

Solution

  1. Step 1: Analyze asynchronous behavior of pm.sendRequest

    pm.sendRequest runs asynchronously, so the second call may start before the first finishes.
  2. Step 2: Understand timing of environment variable setting

    The variable dataId is set only after the first request completes, so the second request may see it as empty if it runs too soon.
  3. Final Answer:

    Because pm.sendRequest is asynchronous, the second request runs before dataId is set -> Option C
  4. Quick Check:

    Async calls need chaining to ensure order [OK]
Hint: Async calls run out of order unless chained properly [OK]
Common Mistakes:
  • Thinking environment variables can't be used in URLs
  • Believing pm.sendRequest can't be called multiple times
  • Assuming console.log is disallowed in callbacks
5. You want to test a multi-step user signup flow in Postman using workflow sequencing. The steps are:
1. Create user (returns userId)
2. Verify email (needs userId)
3. Set user preferences (needs userId)

Which approach correctly sequences these requests and shares userId between them?
hard
A. Use pm.sendRequest inside the test script of each step to call the next, setting environment variables for userId
B. Run all requests manually in any order and copy userId between them
C. Use separate Postman collections for each step without sharing variables
D. Call all requests simultaneously using pm.sendRequest without waiting for responses

Solution

  1. Step 1: Understand multi-step flow needs ordered execution

    Each step depends on the previous step's userId, so requests must run one after another.
  2. Step 2: Use pm.sendRequest with environment variables to pass data

    Calling the next request inside the previous request's test script and setting userId as an environment variable ensures correct sequencing and data sharing.
  3. Final Answer:

    Use pm.sendRequest inside the test script of each step to call the next, setting environment variables for userId -> Option A
  4. Quick Check:

    Chain requests with pm.sendRequest and env vars for data flow [OK]
Hint: Chain requests with pm.sendRequest and env vars [OK]
Common Mistakes:
  • Running requests manually without automation
  • Not sharing variables between requests
  • Calling requests simultaneously causing race conditions