boolean always false after 32 seconds
When dealing with millis and micros you must always use unsigned long variables; otherwise, values will be overflow/truncate.

When doing time arithmetic, you must always use differences, not additions, because of the nature of unsigned arithmetic.

Your updated sketch is this:

void setup()
{
    Serial.begin(9600);    
    while(!Serial);    
    Serial.println(); Serial.println("Test");
}

#define STEPS 3
unsigned long lightCmd[STEPS] = {4000, 60000, 90000};
int stepe = 0;
unsigned long stepTime = 0;

void loop()
{
    if(millis() - stepTime &gt;= lightCmd[stepe]) {
        Serial.print(stepe);
        Serial.print(".- ");
        stepe = (stepe+1)%STEPS; //I'm bad at naming variables, sorry
        stepTime = millis();
        Serial.print(stepTime);
        Serial.println(" changing"); // debugging
    }
}