In a large saucepan, melt butter then add onion. Cook until soft, about 5 minutes. Add garlic, spinach, artichokes, Worcestershire and salt. Stir and cook for 3-5 minutes. Remove from heat and add Parmesan. Set aside and let cool.
In a large saucepan over medium heat, melt the butter. Whisk in the flour until smooth and continue whisking for about 1 minute. Slowly whisk in the milk until smooth. Bring to a boil and cook, whisking often, until slightly thickened.
Add gruyere, mozzarella, Parmesan, cayenne, salt and pepper. Stir until cheese is melted and smooth. Set aside at room temperature until ready to use.
Preheat oven to 350° F. Bring a large pot of water to boil. Add lasagna noodles, salt and olive oil to water. Cook noodles, stirring often, until pliable but not fully cooked. Drain and set aside.
Add beaten egg and 3/4 cup of the cheese sauce to the spinach mixture and stir to combine.
Add 2 cups of the cheese sauce to the bottom of a 9x13 baking dish and spread evenly. Lay a lasagna noodle out on a flat surface. Spoon about two tablespoons filling onto one end. Roll the noodle around the filling into a spiral. Place seam side down into the baking dish. Repeat with 18 noodles total (may have leftover noodles).
Top with remaining cheese sauce, mozzarella and Parmesan. Cover with foil and bake for 30 minutes. Remove foil, turn on broil and broil until browned in spots. Watch closely so it doesn't burn! Let stand 5-10 minutes before serving.