i need some help with scripting. i want that my local computer is shutting down when the last project item is finished. i got this so far (i have to name the last test in project items list - not really what i want - it differs which one is last).
procedure shutdown_OnStopTest(Sender); begin if (Project.TestItems.Current.Name = 'last_test') then begin Sys.Shutdown; end; end;
OnStopTest is usually will come to picture once after all test items or scripts or whatever Test Complete executing are completed.
As per my point, You don't need to give any kind of if condition in the event handler.
Actually, the onstoptest will fire upon the ending of any item listed as a "Test Item" in the project test items panel.
I think that you can check to see what the index of the current test item is, check that against the total number of test items, and from there determine if it's the last one.
shutting down the machine (= killing the context) from within an Event procedure may lead to unexpected results.
I'd feel better with this:
- Trigger an external script which shuts down the machine asynchronously after some delay (10 min?).
This will give TC the Chance to end the test run as planned, write the logs and so on, without being forced to shut down by the OS
I would be second to Manfred.
Additionally: In general, it is near to impossible in TestComplete to figure-out from test code if the given test item is the last one that is going to be executed or not. Thus, it is more safe and reliable to shut down the box via some external action triggered when the test run is over.
ok i see,
the code i posted above is for hardcoded testname only. it works fine so far.
but if i want a system shutdown after the last test item in list finished, i will use the way tristaanogre described:
when i´m done i will posting the code here. maybe someone will need it in the future again 🙂