A node wrapper for the MacOS Network Link Conditioner. Ideal for automating your test setup on a Mac.
The Network Link Conditioner is a tool for developers that can change your Network speed on a system level, and has profiles like "EDGE", "3G" or "LTE" preinstalled.
This is using applescript to get or set parameters of the conditioner. As a result, you will see the UI pop up on your screen - so no perfect solution. Reason is, that there is no internal API to change the settings. You also have to allow the accessibility-setting in ๐ >system preferences>security>Data security>Accessibility for the program executing this code. But normally you will be asked to do that the first time you execute some code like the example below.
To use this, you will need to do the following things:
- Have a device/VM that runs MacOS
- Have the Network Link Conditioner installed. Instructions can be found here.
$ npm install network-link-conditioner
var nlc = require("network-link-conditioner");
async function example(){
nlc.setDelay(1);
const profiles = await nlc.getProfileNames();
await nlc.setProfile(profiles[1]);
await nlc.setProfile("3G");
await nlc.on();
await nlc.off();
}
example();
on()
Enables the Network Link Conditioner.
off()
Disables the Network Link Conditioner.
getProfileNames()
Gets all available profiles as an array of strings.
setProfile(NameAsString)
Sets a profile. The name has to be a string.
setDelay(timeInSeconds)
This sets the delay between actions in applescript. If the code fails on your machine, you might have to increase this number.
closeSystemPreferences
Closes the system preferences window.