browser-control 0.2.1

CLI that manages browsers and exposes them over CDP/BiDi for agent-driven development. Includes an optional MCP server.
Documentation
//! Friendly word list used for browser instance naming.
//!
//! Exactly 256 entries (power of two) of short, lowercase, ASCII-only words.

pub const WORDS: &[&str] = &[
    "panda",
    "falcon",
    "otter",
    "koala",
    "tiger",
    "lynx",
    "puma",
    "panther",
    "wolf",
    "fox",
    "bear",
    "moose",
    "badger",
    "beaver",
    "ferret",
    "heron",
    "raven",
    "robin",
    "sparrow",
    "finch",
    "magpie",
    "osprey",
    "owl",
    "eagle",
    "hawk",
    "kestrel",
    "kite",
    "pelican",
    "puffin",
    "penguin",
    "seal",
    "walrus",
    "whale",
    "dolphin",
    "narwhal",
    "shark",
    "manta",
    "octopus",
    "squid",
    "crab",
    "lobster",
    "prawn",
    "urchin",
    "starfish",
    "newt",
    "gecko",
    "iguana",
    "lizard",
    "cobra",
    "viper",
    "python",
    "mamba",
    "turtle",
    "tortoise",
    "frog",
    "toad",
    "salamander",
    "axolotl",
    "koi",
    "carp",
    "trout",
    "salmon",
    "tuna",
    "mackerel",
    "herring",
    "perch",
    "bass",
    "pike",
    "marlin",
    "swordfish",
    "cheetah",
    "leopard",
    "jaguar",
    "ocelot",
    "lemur",
    "sloth",
    "tapir",
    "capybara",
    "wombat",
    "quokka",
    "maple",
    "cedar",
    "willow",
    "birch",
    "spruce",
    "oak",
    "beech",
    "ash",
    "alder",
    "poplar",
    "aspen",
    "yew",
    "juniper",
    "laurel",
    "fern",
    "moss",
    "clover",
    "thistle",
    "heather",
    "ivy",
    "lotus",
    "lily",
    "poppy",
    "tulip",
    "daisy",
    "violet",
    "jasmine",
    "orchid",
    "peony",
    "dahlia",
    "azalea",
    "rose",
    "sage",
    "basil",
    "thyme",
    "mint",
    "clove",
    "ginger",
    "saffron",
    "cumin",
    "mango",
    "peach",
    "papaya",
    "guava",
    "cherry",
    "plum",
    "apricot",
    "lemon",
    "melon",
    "grape",
    "berry",
    "quince",
    "fig",
    "date",
    "olive",
    "pear",
    "coconut",
    "walnut",
    "pecan",
    "almond",
    "aurora",
    "nebula",
    "comet",
    "quasar",
    "pulsar",
    "nova",
    "galaxy",
    "orbit",
    "cosmos",
    "stardust",
    "meteor",
    "planet",
    "saturn",
    "jupiter",
    "mercury",
    "neptune",
    "solstice",
    "eclipse",
    "zenith",
    "horizon",
    "sunrise",
    "sunset",
    "twilight",
    "dawn",
    "dusk",
    "cloud",
    "mist",
    "fog",
    "rain",
    "drizzle",
    "breeze",
    "gust",
    "zephyr",
    "blizzard",
    "cyclone",
    "tempest",
    "monsoon",
    "hailstone",
    "snowflake",
    "frost",
    "lagoon",
    "fjord",
    "glacier",
    "summit",
    "canyon",
    "prairie",
    "meadow",
    "valley",
    "ridge",
    "plateau",
    "tundra",
    "savanna",
    "oasis",
    "reef",
    "atoll",
    "island",
    "cove",
    "harbor",
    "delta",
    "estuary",
    "river",
    "creek",
    "brook",
    "spring",
    "cascade",
    "waterfall",
    "geyser",
    "crater",
    "volcano",
    "cavern",
    "grotto",
    "dune",
    "desert",
    "jungle",
    "forest",
    "grove",
    "thicket",
    "marsh",
    "bayou",
    "lake",
    "sparkle",
    "shimmer",
    "glimmer",
    "glow",
    "radiant",
    "brilliant",
    "vivid",
    "mellow",
    "gentle",
    "cheerful",
    "merry",
    "jolly",
    "spry",
    "plucky",
    "brave",
    "valiant",
    "noble",
    "wise",
    "clever",
    "witty",
    "swift",
    "speedy",
    "nimble",
    "agile",
    "sturdy",
    "steady",
    "mighty",
    "stoic",
    "silent",
    "quiet",
    "cosmic",
    "mystic",
    "epic",
    "grand",
    "royal",
    "regal",
];

#[cfg(test)]
mod tests {
    use super::WORDS;

    #[test]
    fn has_exactly_256_entries() {
        assert_eq!(WORDS.len(), 256);
    }

    #[test]
    fn all_entries_are_unique() {
        let mut sorted: Vec<&&str> = WORDS.iter().collect();
        sorted.sort();
        sorted.dedup();
        assert_eq!(sorted.len(), WORDS.len());
    }

    #[test]
    fn all_entries_lowercase_ascii_alpha() {
        for w in WORDS {
            assert!(!w.is_empty(), "empty word");
            assert!(
                w.bytes().all(|b| b.is_ascii_lowercase()),
                "word {w:?} contains non-lowercase-ascii-alpha character"
            );
        }
    }
}