On a comal or griddle that has been heated to medium high add a piece of aluminum foil for easy clean up then add your roma tomatoes, 1/4 of the onion that was not diced and the chiles. Depending on your heat tolerance add the jalapenos and serranos. I didn't add the serrano this time because they are sometimes hot, but they add excellent flavor. Experiment. Add a little of both. Roast the tomatoes, onion and chiles until they are charred, turning them periodically to char them a little on all sides.
When you have reached your desired amount of char, remove the chiles to a cutting board and chop up in large chunks and add to a blender along with the garlic, the 1/4 charred onion and a pinch of salt. Remove the tomatoes and add to a bowl. Blend the chile, onion , garlic and salt mixture, then add the tomatoes. Pulse or blend to a smooth consistency.
In a skillet add a couple tablespoons of oil and add the diced onions. Saute for a few minutes, then add your tomato mixture. Simmer for about 10 minutes,
While your tomato sauce is simmering, heat your refried beans. In another skillet heat a little oil and fry your tortilla to your liking For me they either have to be just softened or fried crispy because in between I think they can be a little tough. Drain them on a paper towel. In the same skillet add your egg and baste with a spoon to cook the whites to your desired doneness. Continue to baste if you like your yolk medium cooked. I like them sunny side up for presentation, but please cook them to your liking.
To assemble: Ladle a little of the sauce into a bowl or a plate, Top with your tortilla. To the tortilla add the refried beans, If you are adding chorizo or other meats, top your beans with that. Then add your egg. Finish the dish with a good ladle of the sauce and top with cheese and some avocado.